docker compose是生产环境部署dify的必需方式,可自动编排postgresql、redis、weaviate、nginx等组件,保障数据持久化与端口映射正确;需确保docker≥20.10、compose v2、磁盘≥50gb,并严格配置.env中postgres_password、redis_password和console_api_url。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在生产环境稳定运行 Dify AI 应用开发平台,必须采用 Docker Compose 方式完成服务编排与依赖管理,它能自动拉起 PostgreSQL、Redis、Weaviate、Nginx 等全部核心组件,并保障数据持久化和端口映射逻辑正确,避免手动启停导致的服务错位或配置漂移。
确认基础环境是否就绪
执行 docker version --format '{{.Server.Version}}',输出版本号必须 ≥20.10;若低于此值,Dify 的 healthcheck 和资源限制功能将失效,容器可能启动后立即退出。
执行 docker compose version,确认返回的是 【Docker Compose V2】(格式为 Docker Compose version v2.x.x),不是已废弃的 docker-compose(V1)命令。V1 无法解析 profiles、x-xxx 扩展字段,会导致 docker-compose.yml 加载失败。
检查磁盘空间:df -h /var/lib/docker,确保剩余空间 ≥50GB。Weaviate 向量库在索引知识文档时会临时占用数倍原始数据体积,空间不足将直接卡死在 weaviate_1 容器启动阶段。
获取并校验官方部署文件
方法一:使用 curl 直接下载最新版 docker-compose.yml:
curl -L https://raw.githubusercontent.com/langgenius/dify/main/docker/docker-compose.yaml -o docker-compose.yml
方法二:克隆完整仓库(推荐用于调试或定制):
git clone https://github.com/langgenius/dify.git && cd dify/docker
下载后务必校验 SHA256 值。进入 dify/docker 目录,运行:sha256sum docker-compose.yaml,比对官网 Release 页面对应版本的 checksum。若不一致,说明文件被中间代理篡改或下载不完整,【不可继续部署】。
配置 .env 文件关键参数
第一步:复制模板:cp .env.example .env
第二步:编辑 .env,至少修改以下三项:
POSTGRES_PASSWORD=your_strong_password_here —— 必须改!默认值 postgres 会触发 Dify 启动时的安全拒绝策略,API 服务直接报 500 错误。
REDIS_PASSWORD=16_char_min_complex —— 长度不足 16 位或含空格/制表符,会导致 worker 容器反复重启,日志中出现 NOAUTH Authentication required。
CONSOLE_API_URL=http://localhost:8081 —— 若部署在远程服务器,此处必须改为服务器公网 IP 或域名,否则前端请求 API 会跨域失败,页面白屏且控制台报 net::ERR_CONNECTION_REFUSED。
启动并验证服务状态
执行 docker compose up -d 后,等待 90 秒再检查状态。
运行 docker compose ps,所有服务状态应为 running,特别注意 weaviate 和 api 不能显示 restarting 或 exited。
查看 api 日志:docker compose logs -f api | grep "Uvicorn running",出现该提示才表示后端真正就绪。若卡在 Waiting for PostgreSQL... 超过 2 分钟,大概率是 .env 中数据库连接参数错误或 PostgreSQL 容器未启动成功。
打开浏览器访问 http://localhost:80(或你配置的 EXPOSE_NGINX_PORT),看到 Dify 登录页即表示部署完成。











