本地 Docker 部署 Dify 踩的四个坑,记录一下。
一、80 端口被占用,容器起不来
docker compose up -d 报错:
Error response from daemon: ports are not available:
exposing port TCP 0.0.0.0:80 -> 127.0.0.1:0:
listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket
in a way forbidden by its access permissions.

Windows 的 80 端口被系统服务占了,Docker 绑不上。
解决: 改 .env 里的宿主机映射端口:
# 改前
EXPOSE_NGINX_PORT=80
EXPOSE_NGINX_SSL_PORT=443
# 改后
EXPOSE_NGINX_PORT=8080
EXPOSE_NGINX_SSL_PORT=8443
容器内部 Nginx 还是 80 不用动,映射自动变成 8080:80。改完 docker compose up -d,访问 http://localhost:8080。
注意: 通过http://localhost/signin进入 dify,默认请求 80 端口,要改为http://localhost:8080/signin
二、管理员账号未知
用了别人分享的文件夹,启动后管理员已被创建,/install 页面进不去。
解决: 删掉整个文件夹,GitHub 重新 clone,重新 docker compose up -d,就能正常创建管理员了。本质是 PostgreSQL 数据卷里存了别人的账号信息。
三、工作流卡在"同步数据"
1.16.1 版本 bug,工作流界面一直转圈进不去。
解决: 修改 docker-compose.yml 镜像标签:
image: langgenius/dify–api:1.14.2
image: langgenius/dify–web:1.14.2
重启:
docker compose pull
docker compose up -d
缺点:失去 v1.16 新 Agent 沙箱功能;优点:工作流秒加载、无同步卡死。
四、代码节点报沙箱网络错误(重点)
代码节点 Test Run 报错:
Failed to execute code, which is likely a network issue,
please check if the sandbox service is running.
( Error: [Errno -3] Temporary failure in name resolution )

原因: docker/volumes/sandbox/conf/ 目录下缺少 config.yaml。Docker 镜像不会自动生成这个文件,sandbox 找不到配置就默认禁用网络。
解决: 从dify-sandbox 源码拿到配置,创建 docker/volumes/sandbox/conf/config.yaml:
app:
port: 8194
debug: False
key: dify–sandbox
max_workers: 4
max_requests: 50
worker_timeout: 15
python_path: /opt/python/bin/python3
enable_network: True
enable_preload: False
log_path: "./logs"
allowed_syscalls:
proxy:
socks5: ''
http: 'http://ssrf_proxy:3128'
https: 'http://ssrf_proxy:3128'
no_proxy: ''
allowed_env_vars: []
proxy 必须填 ssrf_proxy:3128,sandbox 在 internal 网络里没有直接外网出口,流量必须走 Squid 代理。
然后重建容器(restart 不会重读 .env):
docker compose up -d sandbox
验证:
docker compose exec sandbox env | findstr ENABLE_NETWORK
# ENABLE_NETWORK=true

网硕互联帮助中心
评论前必须登录!
注册