一、前期提要
由于项目中需要将dify部署到内网服务器,所以需要将dify进行打包,进行离线部署,但是部署过程中,出现了许多问题,在这里列出来希望能帮大家解决一点问题。
情况一:
因为现场网络频段是172频段,而docker默认安装时也是在这个频段,所以这里需要调整如下内容,把频段调整为与默认网段不冲突,记得docker的网段也需要修改。
# vim docker-compose.yaml
networks:
outside.
data_default:
driver: bridge
ipam:
config:
- subnet: 192.168.10.0/24
data_ssrf_proxy_network:
driver: bridge
ipam:
config:
- subnet: 192.168.20.0/24
ssrf_proxy_network:
driver: bridge
ipam:
config:
- subnet: 192.168.30.0/24
milvus:
driver: bridge
ipam:
config:
- subnet: 192.168.40.0/24
opensearch-net:
driver: bridge
ipam:
config:
- subnet: 192.168.50.0/24
情况二:
起初在测试环境尝试进行离线部署的时候,以为使用docker commit 将运行中的容器(含插件)提交到镜像就可以了,但是到现场才发现根本连不上大模型,因为在dify中,每次进行docker-compose up -d 时都会把容器内的插件给清空了,即使在volumes已经包含相应插件,他也会尝试去安装依赖。
解决方案:
后面在dify中的issues中看到可以把插件中的依赖直接打包进去,我也是用这种方法才解决。
步骤一:
# 运行环境
# Linux amd64
# Python version is 3.11 or higher
git clone https://github.com/junjiem/dify-plugin-repackaging.git
cd dify-plugin-repackaging
步骤二:
注意:由于该脚本中默认是使用linux进行构建,所以使用其他环境需要从dify下载相应插件包
# 核心脚本
# plugin_repackaging.sh
# dify-plugin-linux-amd64-5g x86
# dify-plugin-linux-arm64-5g arm
# 常用构建方式
# 1、从marketplace安装
./plugin_repackaging.sh market langgenius agent 0.0.9
# 2、从git安装
./plugin_repackaging.sh github junjiem/dify-plugin-agent-mcp_sse 0.0.1 agent-mcp_see.difypkg
# 3、从本地安装
./plugin_repackaging.sh github junjiem/dify-plugin-agent-mcp_sse 0.0.1 agent-mcp_see.difypkg
步骤三:
注意:构建后的插件包需要注意包大小,如果依赖缺失也是无法进行安装,不想自己打包的也可以私信我。