2026年3月更新 8个服务详解

Dify Docker Compose配置指南

关于Dify Docker架构的所有知识——从每个容器的功能到使用自定义配置加固您的生产部署。

Dify的Docker架构

Dify的docker-compose.yaml启动八个服务。了解每个服务的作用有助于您配置、排查故障和扩展部署。

nginx 反向代理/Web服务器

将传入的HTTP请求路由到正确的内部服务(Web UI或API)。这是唯一需要公开访问的容器。

~50 MB
api Dify API服务器

主要的Python/Flask后端。处理所有业务逻辑、LLM调用、RAG管道执行和REST API端点。

~300 MB
worker Celery后台工作进程

处理异步任务:文档索引、数据集导入、长时间运行的LLM链。与API容器共享代码。

~300 MB
web Next.js前端

作为Next.js应用提供的基于React的用户界面。与API容器通信。

~150 MB
db PostgreSQL数据库

存储所有持久数据:应用、对话、数据集元数据、用户和API密钥。

~100 MB
redis 缓存和消息代理

缓存频繁查询,为工作进程存储Celery任务队列,处理速率限制数据。

~30 MB
weaviate 向量数据库

存储RAG知识库的文档嵌入。最大的内存消耗者。可以用pgvector或Qdrant替换。

~500 MB
sandbox 代码执行沙箱

用于在Dify工作流中执行用户定义代码节点的隔离容器。以受限权限运行。

~100 MB

总基础内存:仅容器空闲时约需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
进入API容器Shell 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_URLAPP_URL变量是否与您的实际域名匹配。CORS错误几乎总是由URL配置不正确引起的。