Dify 二开及部署
本文是演示本地二开dify
,然后打包、推送镜像、部署服务器,如果直接在服务器上打包,那直接省掉部署的步骤。
演示环境
- Window@10 专业版
- Node.js@22
- Docker@25.0.3
- WSL@2.4.12.0
- Ubuntu@20.04.6 LTS
- Dify@1.0.0
修改本地配置
- 修改官方镜像引用为本地服务地址:
位置:docker/docker-compose.yaml
把镜像配置改为服务相对路径,以改api
、web
服务为例:
image: langgenius/dify-api:1.0.0
改为
build:
context: ../api
args:
TAG: ${API_TAG}
image: harbor.xxx/xxx-ai-uat/xxx-ai-api:${API_TAG}
image: langgenius/dify-web:1.0.0
改为
build:
# 如果前端代码抽出来了,那就改相对路径
context: ../web
args:
TAG: ${WEB_TAG}
image: harbor.xxx/xxx-ai-uat/xxx-ai-web:${WEB_TAG}
- 修改nginx端口
默认是80
,如果没冲突可以不改
- 复制一份
docker\.env.example
,改名为.env
,修改变量NGINX_PORT
和EXPOSE_NGINX_PORT
构建 docker build
cd docker # 进入目录
# 构建(Ubuntu执行,如果是window powershell可能要把tag去掉:docker compose build,到时候手动改yaml的tag)
API_TAG=202503151345 WEB_TAG=202503151345 docker compose build
docker compose down # 停止并移除docker-compose管理的容器、网络、卷和镜像
API_TAG=202503151345 WEB_TAG=202503151345 docker compose up -d # 更新镜像
docker logs -f docker-api-1 # 启动镜像docker-api-1(代码的修改生效,本地跑),并打印日志
部署
推镜像
# 手动改镜像tag(build没设置tag时)
# docker tag docker-web:latest harbor.xxx/xxx-ai-uat/xxx-ai-web:202503151345
# 推送镜像
docker push harbor.xxx/xxx-ai-uat/xxx-ai-api:${API_TAG}
docker push harbor.xxx/xxx-ai-uat/xxx-ai-web:${WEB_TAG}
进入服务器更新镜像
- cd 进 docker 文件夹,备份原有的
docker-compose.yaml
文件并上传新的 yaml; - 执行
WEB_TAG=202503151345 docker compose down
; - 执行
docker compose up -d
;
大功告成!