Dify 1.0+版本迁移到离线环境
Dify升级到1.0+版本后,使用了插件模块扩展功能,但是插件模型在迁移时,无法通过直接拷贝文件方式实现,在网上搜索了很多方法,例如可以使用dify-plugin-repackaging工具将插件重新打包成offline安装版本,后者在离线环境配置离线pip服务器,然后安装插件,这两种方法都可行,但是在某些系统中存在因文件名过长而安装失败的问题。笔者反复测试了多种方法,最终成功摸索出一种迁移方法,实测可以将1.4.0版本dify迁移到离线环境,并保留安装的插件。
一、在联网环境中配置dify开发环境
联网环境配置dify环境比较简单,不详细阐述了。
1.下载dify项目
Dify下载可以通过github或者gitee,github要看网络状态,使用gitee,直接使用git命令。
git clone dify: 从https://github.com/langgenius/dify同步
2.运行dify
使用powershell,进入dify项目的docker目录,把“.env.example”文件复制一份,改名为“.env”,运行“docker compose up -d”命令即可运行dify。前提是安装了docker平台。
3.安装插件
Dify的插件系统安装时需要python环境使用pip安装一堆库,在国内安装时经常发现安装不上,这时候配置一下pip国内源即可解决。具体如下:
打开docker目录下“docker-compose.yaml”文件,找到plugin_daemon镜像中的PIP_MIRROR_URL配置项,修改为国内源,例如“https://pypi.tuna.tsinghua.edu.cn/simple”,当然也可以配置为国内其他源。
修改完成后,在docker目录下,运行“docker compose down”和“docker compose up -d”,重启一下dify,即可正常安装插件,然后就可以根据自己的需求安装dify插件。
二、将dify迁移至离线环境
1. 打包dify本地文件
Dify的本地运行文件就是docker目录下的所有文件,但是安装插件后,会发现,无法把docker目录直接打包迁移,主要原因就是volumes子目录中的plugin_daemon文件夹无法直接打包,因此只能取巧迁移。
首先把docker目录下除volumes目录之外的所有文件和文件夹打包成docker.zip压缩文件,然后把volumes中除plugin_daemon文件外的其他文件夹打包成volumes.zip压缩文件。
2. 打包插件
docker目录,volumes子目录中的plugin_daemon文件夹无法直接打包,打开后主要包含assets、cwd、plugin、plugin_packages四个文件夹,其实是docker-plugin_daemon-1容器中/app/storage目录的映射,因此可以进入容器中进行打包,具体:
首先通过“docker exec –it docker-plugin_daemon-1 /bin/bash”进入容器,然后执行“cd /app/storage”进入目录,然后执行“tar –cvf pack.tar assets、cwd、plugin、plugin_packages”,将assets、cwd、plugin、plugin_packages四个文件夹打包成pack.tar压缩文件。由于映射在同一目录,可以发现docker目录的volumes文件夹中plugin_daemon文件夹中多了一个pack.tar文件,就是刚刚打包的压缩文件。
3. 恢复dify本地文件
把1中打包的docker.zip和volumes.zip拷贝到离线环境中,docker.zip解压为docker文件夹,volumes.zip解压为volumes文件夹,并拷贝到docker文件夹中。
打开powershell,在docker目录下执行“docker compose up -d”命令运行dify,这时候volumes文件夹中会生成一个plugin_daemon文件夹。
4. 恢复插件
把2中打包的pack.tar文件拷贝到离线环境docker目录下的volumes文件夹中的plugin_daemon文件夹中,如果没有plugin_daemon文件夹,自己建一个也可以。
首先通过“docker exec –it docker-plugin_daemon-1 /bin/bash”进入容器,然后执行“cd /app/storage”进入目录,然后执行“tar –xvf pack.tar”,将assets、cwd、plugin、plugin_packages四个文件夹解压出来(解压时间比较长不用处理)。由于映射在同一目录,可以发现离线环境的docker目录的volumes文件夹中plugin_daemon文件夹中多了assets、cwd、plugin、plugin_packages四个文件夹。
5. 重启dify
执行完4后登陆dify会发现安装的插件已经可以在插件页面看到,但是可能无法正常使用。此时打开docker目录下“docker-compose.yaml”文件,找到plugin_daemon镜像中S3开头的三个配置项,注释掉后,再通过“docker compose down”和“docker compose up -d”,重启一下dify,即可正常使用插件。