Dify 本地化部署教程(含常见问题与解决方案)
使用 Docker 在本地部署 Dify,并解决部署过程中遇到的典型问题,如插件下载失败、容器无法联网等。
Dify搭建
Docker Desktop安装与配置
- 下载安装Docker Desktop
下载地址:https://docs.docker.com/get-started/get-docker/
点击get docker 下拉到绿色框部分-按照你自己对应的电脑型号下载
- 下载完成后双击“Docker Desktop Installer.exe”安装Docker Desktop
- 安装过程遇到错误说wsl没有点击提示链接下载安装wsl
- 验证docker安装,打开cmd输入:docker --version查看docker版本。
- 双击运行docker -点击右上角设置,如下图所示。设置Docker下载image的镜像源:添加如下设置,不要直接复制,添加缺少部分。
{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.rainbond.cc","https://docker.lmirror.top"]
}
- 在Docker Desktop中设置Docker下载image后存放的位置,默认为“C:\Users${user}\AppData\Local\Docker\wsl”路径,后续Dify将使用大于10G的空间存储images,可以修改到空间大的盘中。
- 设置完成后可以通过cmd命令“docker info”查看镜像地址是否生效:
Dify部署与访问
基于Docker部署Dify
- 在DIFY GitHub中下载Dify,选择目标版本我这里用的是1.1.3,下载完成后,把压缩包解压.
2.进入docker目录“C:\dify-1.1.3\dify-1.1.3\docker” ,将“.env.example”文件改名为“.env”,然后在该目录下打开cmd,通过如下命令启动Dify:
docker compose up -d
3.下载完成后执行下面命令,查看启动的镜像
docker ps
- 发现一台是Restarting
- 查看这台Restarting的日志看看问题在哪里,复制这台前面对应的CONTAINER ID,问题是❌ dify-plugin-daemon 启动失败,是因为 它无法连接 PostgreSQL 数据库。
docker logs dcd7d1269b24
✅解决办法
1️⃣ 确认 PostgreSQL 容器是否启动成功
运行:
docker ps -a
说明✅ PostgreSQL 容器 docker-db-1 正常运行并且健康 (Up 2 minutes (healthy))
❌ 但插件容器 docker-plugin_daemon-1 虽然是 Up 状态,但它 正在反复崩溃重启,日志中报错:
failed to connect to `host=db user=postgres database=dify_plugin`: dial tcp 172.18.0.5:5432: connect: connection refused
🔍 根本问题
dify-plugin-daemon 容器使用的数据库地址是 db,真正的数据库容器叫:
CONTAINER: docker-db-1
✅ 解决方法
统一使用 docker-compose up
进入 C:\dify-1.1.3\dify-1.1.3\docker,直接运行:
docker-compose down -v # 清干净旧容器(谨慎操作,注意数据备份)
docker-compose up -d
✅ 为什么这可以解决问题?
docker-compose.yml 默认会将所有服务放在同一个网络下(叫做 docker_default 或类似的名字),
这样 plugin-daemon 服务里的 host=db 就能正确解析为 postgres 容器,
只要数据库正常,plugin-daemon 就不会再 crash 或 restart。
⚠️ 注意事项
如果你 对数据库数据有保留需求,可以用下面这条命令来避免清理数据:
docker-compose down # 不加 -v,不会删除 volume(数据库数据)
✅执行完之后在确认所有的服务是否都正常运行
docker ps
✅验证服务能否访问
http://localhost
进入了Dify 管理后台页面,登录邮箱密码即可。
使用本地部署Dify的过程中遇到的错误以及解决办法
下载插件报错
{"code": "invalid_param","message": "Reached maximum retries (3) for URL https://marketplace.dify.ai/api/v1/plugins/download?unique_identifier=langgenius/deepseek:0.0.5@21408d5c48cd9f18d66b08883d0999fe89e6d049c891324c2229dea23b9665d5","status": 400
}
🔍 错误含义
尝试下载了3次插件都失败了。大概是容器无法联网和DNS配置问题。
✅ 解决方法:让本地 Docker 容器能访问外网
✅ 1. 本机能访问外网吗? – 可以打开
确认自己的浏览器可以打开:
https://marketplace.dify.ai
✅ 2. 检查 Docker 网络 – 可以
docker run --rm byrnedo/alpine-curl http://www.google.com
✅ 2.1 如果不可以配置Dify可以访问外部网络
1、Dify后续运行在sandbox容器中,默认在该容器中不允许连接外部ip,通过配置“D:\dify-1.1.3\docker”目录中“docker-compose.yaml”文件中的sandbox部分,允许sandbox容器连接外部网络。
2、docker-compose.yaml文件中修改处如下,只需要在“networks”部分加入 “- default”即可(特别提示:换行后可能存在Tab符号,可以删除该行后的空白行)。改完配置后重启Dify
#在目录C:\dify-1.1.3\dify-1.1.3\docker下cmd 执行下面命令停止Dify
docker compose down
#在目录C:\dify-1.1.3\dify-1.1.3\docker下cmd 执行下面命令启动Dify
docker compose up -d
以上排查说明我的网络没问题,后续下载失败多点击几次,最终下载成功。