Dify Docker Compose配置指南
关于Dify Docker架构的所有知识——从每个容器的功能到使用自定义配置加固您的生产部署。
Dify的Docker架构
Dify的docker-compose.yaml启动八个服务。了解每个服务的作用有助于您配置、排查故障和扩展部署。
nginx 反向代理/Web服务器 将传入的HTTP请求路由到正确的内部服务(Web UI或API)。这是唯一需要公开访问的容器。
api Dify API服务器 主要的Python/Flask后端。处理所有业务逻辑、LLM调用、RAG管道执行和REST API端点。
worker Celery后台工作进程 处理异步任务:文档索引、数据集导入、长时间运行的LLM链。与API容器共享代码。
web Next.js前端 作为Next.js应用提供的基于React的用户界面。与API容器通信。
db PostgreSQL数据库 存储所有持久数据:应用、对话、数据集元数据、用户和API密钥。
redis 缓存和消息代理 缓存频繁查询,为工作进程存储Celery任务队列,处理速率限制数据。
weaviate 向量数据库 存储RAG知识库的文档嵌入。最大的内存消耗者。可以用pgvector或Qdrant替换。
sandbox 代码执行沙箱 用于在Dify工作流中执行用户定义代码节点的隔离容器。以受限权限运行。
总基础内存:仅容器空闲时约需1.5GB。在4GB服务器上,这为操作系统和实际工作负载留下约2.5GB。生产环境建议使用8GB内存。
环境变量指南
Dify的所有配置都存储在dify/docker/.env中。从.env.example复制并自定义这些关键设置:
安全性(必须)
# 生成命令:openssl rand -base64 42
SECRET_KEY=your-very-long-random-secret-key
# 存储敏感数据的加密密钥
# 生成命令:openssl rand -hex 16
ENCRYPT_IV=your-16-char-hex-value 数据库配置
# PostgreSQL配置(Docker内部网络)
DB_USERNAME=postgres
DB_PASSWORD=change-this-strong-password
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify
# Redis配置
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=change-this-redis-password
REDIS_DB=0 URL和CORS配置
# 您的域名(末尾不加斜杠)
CONSOLE_URL=https://your-domain.com
APP_URL=https://your-domain.com
SERVICE_API_URL=https://your-domain.com
# CORS来源(逗号分隔)
CONSOLE_CORS_ALLOW_ORIGINS=https://your-domain.com
WEB_API_CORS_ALLOW_ORIGINS=https://your-domain.com LLM API密钥(配置时可选)
# 也可以在Dify Web UI中配置
# 这些.env设置在首次启动时预配置提供商
OPENAI_API_KEY=sk-your-openai-key
ANTHROPIC_API_KEY=sk-ant-your-key
GOOGLE_API_KEY=your-gemini-key
# 对于Ollama(本地LLMs)
# 在UI中配置:设置 → 模型提供商 → Ollama 自定义配置
自定义端口映射
如果80端口被占用,通过编辑.env更改Dify的Nginx绑定的主机端口:
# 更改Nginx容器的主机端口
EXPOSE_NGINX_PORT=8080
EXPOSE_NGINX_SSL_PORT=8443 禁用Weaviate(改用pgvector)
Weaviate使用约500MB内存。在内存受限的服务器上,切换到pgvector(已在PostgreSQL容器中可用):
# 在.env中——将向量存储更改为pgvector
VECTOR_STORE=pgvector
# 然后不带Weaviate重启
docker compose up -d --scale weaviate=0 启用GPU支持
要传递NVIDIA GPU(用于本地嵌入模型),将GPU运行时添加到您的docker-compose.override.yaml:
services:
api:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu] 请查阅GPU托管指南获取完整配置说明。
常用命令
docker compose up -d docker compose down docker compose restart api docker compose logs -f api worker docker compose exec api bash docker compose ps docker stats docker compose down --remove-orphans docker compose pull docker compose up -d --build api 故障排查
容器持续重启
检查日志:docker compose logs api。通常由SECRET_KEY格式不正确或缺少必需的环境变量引起。确保SECRET_KEY至少有32个字符。
内存不足——容器被OOM killer杀死
添加交换空间和/或升级到更大的服务器。运行dmesg | grep -i "killed process"确认OOM故障。Weaviate容器通常是罪魁祸首——考虑切换到pgvector。
Web容器无法连接到API
检查.env中的CONSOLE_URL和APP_URL变量是否与您的实际域名匹配。CORS错误几乎总是由URL配置不正确引起的。