如何使用 Docker Compose 生产环境部署 Dify 工作流服务?

文章导读
生产环境部署 Dify 工作流服务推荐使用官方提供的 Docker Compose 方案,重点在于修改默认密钥和配置持久化存储。风险边界在于未修改默认密码可能导致数据泄露,未配置 HTTPS 会导致通信明文传输。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

生产环境部署 Dify 工作流服务推荐使用官方提供的 Docker Compose 方案,重点在于修改默认密钥和配置持久化存储。风险边界在于未修改默认密码可能导致数据泄露,未配置 HTTPS 会导致通信明文传输。

先说结论:Docker Compose 适合单节点或小规模集群的生产部署,需严格配置环境变量和安全策略。

  • 适合:中小规模私有化部署、内部工具平台、快速验证生产流程。
  • 先准备:独立域名、SSL 证书、修改后的强密码密钥、持久化存储路径。
  • 验收:通过健康检查接口、确认数据卷持久化、验证 HTTPS 访问正常。

命令速用版

以下命令用于获取官方代码库并启动基础服务,生产环境需在启动前修改配置文件。

git clone https://github.com/langgenius/dify.git

cd dify/docker

cp .env.example .env

docker compose up -d

为什么会这样

Dify 架构包含 Web 前端、API 服务、Worker 异步任务和向量数据库等多个微服务,Docker Compose 能统一管理依赖关系。

生产环境直接使用默认配置存在安全风险,因为示例文件包含公开密钥和弱密码。工作流服务依赖后端 API 和 Worker 组件协同运行,单独部署部分组件会导致任务无法执行。持久化存储配置缺失会导致容器重启后数据丢失。

分步处理

第一步:获取代码并隔离配置

从官方 GitHub 仓库克隆最新稳定分支,进入 docker 目录。将 .env.example 复制为 .env,此文件包含所有服务启动参数。

第二步:修改安全密钥

编辑 .env 文件,找到 SECRET_KEY 字段,生成新的随机字符串替换默认值。修改 DB_PASSWORD 和 REDIS_PASSWORD,确保数据库和缓存服务使用强密码。公开资料中没有看到可靠的量化数据表明特定密钥长度要求,建议至少 16 位复杂字符。

第三步:配置持久化存储

检查 docker-compose.yaml 中的 volumes 部分,确保 PostgreSQL 数据目录、Redis 数据目录和向量数据库数据目录映射到宿主机路径。生产环境建议将数据目录挂载到独立磁盘分区,避免系统盘空间不足。

第四步:配置反向代理和 HTTPS

Dify 默认暴露 80 端口,生产环境建议在容器外部署 Nginx 或 Traefik 进行反向代理。配置 SSL 证书强制 HTTPS 传输,避免工作流配置信息和 API 密钥在传输中被窃取。

第五步:启动服务

如何使用 Docker Compose 生产环境部署 Dify 工作流服务?

执行 docker compose up -d 启动所有容器。首次启动向量数据库可能需要较长时间初始化,需等待所有容器状态变为 healthy。

怎么验证是否生效

使用 docker compose ps 命令检查所有容器状态,确保 api、worker、web、db、redis 等核心组件状态为 Up。

查看 API 容器日志,确认没有启动报错。访问配置的域名或 IP,确认能打开 Dify 登录页面。

调用健康检查接口,例如 curl https://your-domain.com/api/health,返回状态码 200 表示服务正常。

创建一个简单工作流并运行,确认异步任务能正常完成,验证 Worker 组件工作正常。

常见坑

默认密钥未修改:直接使用 .env.example 中的 SECRET_KEY 会导致会话被伪造,必须在启动前修改。

向量数据库内存不足:Weaviate 或 Milvus 等向量数据库对内存要求较高,内存不足会导致容器频繁重启。公开资料中没有看到可靠的量化数据表明具体数值,建议根据数据量预留充足内存。

端口冲突:宿主机若已占用 5432、6379 等默认端口,需在 docker-compose.yaml 中修改映射端口。

数据未持久化:未配置 volumes 导致容器删除后数据库数据丢失,生产环境必须检查挂载路径。

常见问题

数据是否会随容器删除而丢失?

正确配置 volumes 挂载后数据不会丢失。

只要 docker-compose.yaml 中定义了数据卷映射到宿主机目录,容器重建不影响数据。

如何扩展 Dify 服务能力?

小规模扩展可增加 API 和 Worker 副本数。

Docker Compose 支持 scale 参数,大规模部署建议迁移至 Kubernetes 集群。

生产环境必须配置 HTTPS 吗?

生产环境强烈建议配置 HTTPS。

明文传输会导致 API 密钥和工作流数据泄露,反向代理配置 SSL 是标准安全实践。

参考来源

Dify Official Documentation, Deployment Guide, https://docs.dify.ai

langgenius/dify GitHub Repository, https://github.com/langgenius/dify