前提
首先,你之前就已经用docker部署了一次,但是不知道如何更新。
注意
如果你进行了二次开发,那么就不要看这个文章,因为是直接强制合并的。
该教程是破坏性更新
请在执行下面步骤前,把所有的工作流导出并且保存好
请在执行下面步骤前,把所有的工作流导出并且保存好
请在执行下面步骤前,把所有的工作流导出并且保存好
更新代码
# 切换到指定目录
cd dify-main/
# 尝试拉取代码
git pull
然后就惊讶发现,根本无法拉取代码,提示如下:
(base) rtxa4500@rtxa4500:~/dify-main$ git pull
remote: Enumerating objects: 2884, done.
remote: Counting objects: 100% (1552/1552), done.
remote: Compressing objects: 100% (98/98), done.
remote: Total 2884 (delta 1502), reused 1455 (delta 1453), pack-reused 1332 (from 2)
Receiving objects: 100% (2884/2884), 1.45 MiB | 1.01 MiB/s, done.
Resolving deltas: 100% (1999/1999), completed with 453 local objects.
From https://github.com/langgenius/dify
4295cefeb..6e0fb055d main -> origin/main
f0f34971f..a046548f9 deploy/dev -> origin/deploy/dev
86318d913..8865bdca0 dev/plugin-deploy -> origin/dev/plugin-deploy
* [new branch] feat/chunk-length-support-env -> origin/feat/chunk-length-support-env
* [new branch] feat/knowledge-dark-mode -> origin/feat/knowledge-dark-mode
* [new branch] feat/workflow-node-dark-mode -> origin/feat/workflow-node-dark-mode
4f0ecdbb6..a697bbdfa fix/adjust-price-frontend -> origin/fix/adjust-price-frontend
b56d2b739..4b5586375 fix/chore-fix -> origin/fix/chore-fix
* [new branch] fix/not-show-strategy-type -> origin/fix/not-show-strategy-type
* [new branch] fix/switch-strategy-clean-param -> origin/fix/switch-strategy-clean-param
* [new branch] opik-monitoring -> origin/opik-monitoring
* [new branch] plugins/beta -> origin/plugins/beta
* [new tag] 0.15.1 -> 0.15.1
* [new tag] 1.0.0-beta.1 -> 1.0.0-beta.1
Updating 4295cefeb..6e0fb055d
error: Your local changes to the following files would be overwritten by merge:
api/configs/packaging/__init__.py
api/controllers/service_api/wraps.py
api/core/model_runtime/model_providers/__base/tokenizers/gpt2_tokenzier.py
api/core/model_runtime/model_providers/openai_api_compatible/llm/llm.py
api/core/workflow/nodes/document_extractor/node.py
api/services/dataset_service.py
docker-legacy/docker-compose.yaml
docker/.env.example
docker/docker-compose-template.yaml
docker/docker-compose.yaml
web/package.json
Please commit your changes or stash them before you merge.
Aborting
这段代码的意思是:请在合并之前提交你的更改或暂存它们。
出现这种情况,就说因为你使用docker部署的时候,自动更新了一些文件,所以会导致你拉取新代码的时候,提示你本地有代码更改了。
解决办法
备份原来的docker compose.yaml文件,先切换到docker目录
cd docker
cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
停止服务,请在 docker 目录下执行命令
sudo docker compose down
备份数据
sudo tar -cvf volumes-$(date +%s).tgz volumes
切换到根目录,执行
git fetch origin
git reset --hard @{u}
git pull --force
提示:
(base) rtxa4500@rtxa4500:~/dify-main$ git pull --force
Already up to date.
那么恭喜你,代码已经拉取成功了。
开始导入旧版本数据,并运行
切换到docker目录
cd docker
如果之前也执行了docker升级,一定要先删除目录下的docker-compose.yaml.1736784002.bak文件
使用 ls 查看目录
(base) rtxa4500@rtxa4500:~/dify-main/docker$ ls
certbot
docker-compose.png
docker-compose.yaml.1736295810.bak
generate_docker_compose
nginx
startupscripts
couchbase-server
docker-compose-template.yaml
docker-compose.yaml.1736784002.bak #### docker-compose的备份文件,上次版本的启动配置中这里,如果你配置了启动端口,那么就在这里还原
middleware.env
README.md
volumes #### docker的卷数据
docker-compose.middleware.yaml
docker-compose.yaml
elasticsearch
middleware.env.example
ssrf_proxy
volumes-1736784053.tgz #### 刚刚的备份文件
由于我修改了容器的80端口和443,那么我需要对文件:docker-compose.yaml 如下修改:
${EXPOSE_NGINX_PORT:-80}:${NGINX_PORT:-80}
改成
${EXPOSE_NGINX_PORT:-81}:${NGINX_PORT:-80}
容器的443端口:
${EXPOSE_NGINX_SSL_PORT:-443}:${NGINX_SSL_PORT:-443}
改成
${EXPOSE_NGINX_SSL_PORT:-8443}:${NGINX_SSL_PORT:-443}
启动容器
sudo docker compose up -d