前言

本文专为使用官方Docker Compose进行快速安装的旧版Dify用户设计。如果您是通过源代码部署或对容器参数进行了自定义配置(例如,复用容器等),则本文可能不适用。此外,我仅对从0.15.3版本升级至1.0.0版本的流程进行了验证,对于更早版本的升级,我尚未进行测试,因此请您在参考时谨慎评估其适用性。

开始升级

升级分为以下步骤:

  1. 备份数据

  2. 主项目升级

  3. 插件迁移

1. 备份数据

1.1 运行 cd 命令至你的 Dify 项目路径,新建备份分支。

1.2 运行以下命令,备份你的 docker-compose YAML 文件(可选)。

cd docker
cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak

1.3 运行命令停止服务,在 Docker 目录中执行备份数据命令。

docker compose down
tar -cvf volumes-$(date +%s).tgz volumes

67c5b1ea933bc.webp

2. 升级版本

v1.0.0 支持通过 Docker Compose 部署。运行 cd 命令至你的 Dify 项目路径,运行以下命令升级 Dify 版本:

git checkout 1.0.0 # 切换至 1.0.0 分支
cd docker
docker compose -f docker-compose.yaml up -d

注意:

在执行git checkout 1.0.0可能会出现问题:

问题一:

error:pathspec'1.0.0'did not match anyfile(s)known to git

67c5b20c064a1.webp

这个问题是在存储库中找不到特定的标签或分支,进行以下操作即可:

  1. 验证标签/分支:确保1.0.0是有效的标记或分支。您可以使用以下方式列出所有标签:

    git tag

    或者使用以下命令列出所有分支:

    git branch -a
  2. 检查更新:确保您的本地存储库是最新的:

    git fetch --all

问题二:

error:Your local changes to the following files would be overwritten by checkout:docker/nginx/conf.d/default.conf.template
Please commit your changes or stash them before you switch branches.

67c5b2337f0ac.webp

需要git checkout 切换本地分支拉取项目别的分支代码时报错,显示已对本地分支做出修改。这时本地分支代码因与远程分支代码不同,所以无法强行切换别的分支拉去代码,放弃本地文件修改内容即可:

1.沒有git add .前可使用。

放弃未加入暂存区的代码(可以是已有文件夹的修改内容,也可以为文件夹的全部内容,但新建文件夹及内容不可以被删除)

git checkout .

2.已经git add .但是还未git commit

清除git add.执行的代码命令,再使用方法1的命令

git reset HEAD

说明:

这两个可能会出现的问题都是git方面的操作常识,与Dify无关。执行完git checkout 1.0.0最后出现HEAD is now at c0358d8d0 release/1.0.0(#14478)代表成功。

成功提示:

在执行完命令:docker compose -f docker-compose.yaml up -d后,系统开始自动拉取镜像,并全部启动后代表升级成功。

67c5b3ab50e7b.webp

67c5b3ab3d3f5.webp

3. 工具迁移为插件

该步骤的目的:将此前社区版本所使用的工具及模型供应商,自动进行数据迁移并安装至新版本的插件环境中。

3.1 进入docker-api容器终端

方法一:

运行 docker ps 命令,查看 docker-api 容器 id 号。

运行命令 docker exec -it a3cb19c2**** bash 进入容器终端,

方法二:

如果有docker管理面板,比如1panel,可以直接在面板里进入容器终端:

67c5b4e0298db.webp

3.2 在容器终端内运行:

poetry run flask extract-plugins --workers=20

67c5b5379f361.webp

如果提示报错,建议参考前置准备,先在服务器内安装 poetry 环境;运行命令后,若终端出现待输入项,点击 “回车” 跳过输入。

此命令将提取当前环境中使用的所有模型和工具。workers 参数将决定提取过程中的所使用的并行进程数,可根据需要进行调整。命令运行完成后将生成 plugins.jsonl 文件保存结果,该文件包含了当前 Dify 实例中所有工作区的插件信息。

确保你的网络正常访问公网,并支持访问https://marketplace.dify.ai。在 docker-api-1 容器内继续运行以下命令:

poetry run flask install-plugins --workers=2

此命令将下载并安装所有必要的插件到最新的社区版本中。当终端出现 Install plugins completed. 标识时,迁移完成。

67c5b566c0395.webp

验证升级结果

访问 Dify 平台,轻点右上角 “插件” 查看此前所使用的工具是否被正确安装。随机使用某个插件,验证是否能够正常运行。如果无误,说明你已完成版本升级和数据迁移。

67c5b591dab6c.webp