dify原地升级:0.15.3->1.3.1

185 阅读2分钟

准备

安装一个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

之后,再重新运行,应该就可以了