准备
安装一个dify0.15的服务器,进入dify页面,创建了一个知识库

配置了通义千问大模型的key

创建一个空白应用,配置了提示词、将知识库载入应用的上下文中

与其对话

现在版本为0.15.3

下面对其进行升级,升级为1.3.1版本的dify,升级后,原有的应用、知识库、提示词设置应该都存在并可用
升级
备份
为了避免升级过程出现意外,需要对原配置进行备份
远程连接进入实例内部,进入dify的docker目录
sudo su
cd /usr/local/applications/dify/docker
备份docker compose 文件和.env文件
cp docker-compose.yaml docker-compose.yaml.0.15.3.bak
cp .env .env_0.15.3.bak
备份docker volume文件
docker compose down
tar -cvf volumes-0.15.3.tgz volumes
进行升级
拉取dify最新的代码
git stash
git pull
切换到1.3.1分支
git checkout 1.3.1
对docker镜像源进行配置,否则docker 拉镜像会失败
vim /etc/docker/daemon.json

加入下面的语句:
"registry-mirrors":[
"https://9cpn8tt6.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"https://mirror.ccs.tencentyun.com",
"https://docker.1panel.live",
"https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://your_preferred_mirror",
"https://dockerhub.icu",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
如下:

注意 "registry-mirrors"上一行的英文逗号
使配置生效
systemctl daemon-reload
systemctl restart docker
配置环境变量
cp .env.example .env
启动容器
docker compose up -d
等待容器启动成功,如下图即启动成功

配置插件
到这其实就升级成功了,但是由于dify 1.0.0之后,配置都插件化了,需要将此前社区版本所使用的工具及模型供应商,自动进行数据迁移并安装至新版本的插件环境中。否则进入页面会发现,虽然应用、知识库什么的都在,却没有模型供应商,还需要重新配置api key什么的
首先进入API容器里
docker exec -it docker-api-1 bash
如果没有修改过,名字即为 docker-api-1
抽取插件
uv run flask extract-plugins --workers=20

安装插件
uv run flask install-plugins --workers=2

迁移插件
uv run flask migrate-data-for-plugin

执行过程中,耐心等待,遇到要输入的地方,直接回车即可
降低模型供应商版本




到这,再重新进入dify页面,可以发现之前配置的应用,知识库,提示词,通义插件,模型配置都在
然而此时去执行问答,会报模型不存在

经过反复排查,可能是0.15版本的通义模型插件版本比较低,迁移过后的通义模型插件版本高,将通义的模型插件版本降为0.1.1,问答可以成功
在右上角点击插件

可以看到,迁移后的插件,默认为0.30版本,在右侧点击0.1版本,点击安装

可能需要多试几次
如果这样还提示模型不存在的话,进入服务器内部
cp .env.example .env
docker compose down
docker compose up -d
之后,再重新运行,应该就可以了