Dify 生产环境实战部署:Docker Compose、Nginx、HTTPS 与配置文件全套示例
Dify 生产环境部署指南|附配置文件
Dify 是一款开源的大语言模型应用开发平台,支持构建 AI 助手、工作流应用、知识库问答、Agent、文本生成应用等。相比直接调用模型 API,Dify 提供了更完整的应用编排、Prompt 管理、上下文管理、知识库检索、日志追踪、团队协作和 API 发布能力,因此非常适合企业或团队在生产环境中落地 AI 应用。
本文将从生产环境部署角度出发,介绍如何在 Linux 服务器上部署 Dify,并给出常用配置文件示例,包括 Docker Compose、环境变量、Nginx 反向代理、HTTPS、数据持久化、安全加固与运维建议。
说明:Dify 官方推荐使用 Docker Compose 部署。本文以 Docker Compose 方式为主,适合大多数中小型生产环境。若你有 Kubernetes、云原生、高可用集群需求,可在此基础上进一步扩展。
一、生产环境部署架构说明
一个较完整的 Dify 生产环境通常包含以下组件:
| 组件 | 作用 |
|---|---|
| Dify API | 后端 API 服务,处理业务逻辑 |
| Dify Web | 前端控制台页面 |
| Worker | 后台异步任务处理 |
| PostgreSQL | 主数据库,存储用户、应用、配置、日志等数据 |
| Redis | 缓存、队列、会话等 |
| Vector Database | 向量数据库,用于知识库检索 |
| Nginx | 反向代理、HTTPS、域名访问 |
| 文件存储 | 存储上传文件、知识库文档等 |
在生产环境中,建议至少满足以下要求:
- 使用独立域名访问 Dify;
- 开启 HTTPS;
- 数据库、Redis、向量数据库必须持久化;
- 配置强密码与安全的密钥;
- 禁止直接暴露数据库、Redis 等内部服务端口;
- 定期备份数据库和上传文件;
- 对接企业可用的大模型 API 或本地模型服务;
- 使用日志、监控和告警机制。
二、服务器环境准备
1. 推荐服务器配置
如果只是小团队使用或测试生产部署,可以使用如下配置:
CPU:4 核及以上
内存:8GB 及以上
磁盘:100GB SSD 及以上
系统:Ubuntu 22.04 LTS / Debian 12 / CentOS 7+
如果知识库规模较大、并发较高,建议:
CPU:8 核及以上
内存:16GB / 32GB 及以上
磁盘:SSD,建议 200GB+
如果使用本地大模型推理,则需要额外准备 GPU 服务器。Dify 本身不一定需要 GPU,GPU 通常用于模型推理服务,例如 Ollama、vLLM、Xinference、LMDeploy 等。
三、安装 Docker 与 Docker Compose
以下以 Ubuntu 为例。
1. 更新系统依赖
sudo apt update
sudo apt upgrade -y
2. 安装基础工具
sudo apt install -y ca-certificates curl gnupg lsb-release git vim ufw
3. 安装 Docker
curl -fsSL https://get.docker.com | bash
安装完成后查看版本:
docker --version
4. 安装 Docker Compose 插件
新版 Docker 通常已内置 Compose 插件:
docker compose version
如果可以正常输出版本号,说明安装成功。
5. 将当前用户加入 Docker 用户组
sudo usermod -aG docker $USER
然后重新登录服务器,或者执行:
newgrp docker
四、创建部署目录
建议将 Dify 部署在 /opt/dify 目录下:
sudo mkdir -p /opt/dify
sudo chown -R $USER:$USER /opt/dify
cd /opt/dify
如果使用官方仓库:
git clone https://github.com/langgenius/dify.git
cd dify/docker
不过在生产环境中,建议你维护自己的 docker-compose.yml 和 .env 文件,便于版本控制和安全管理。
五、生产环境 Docker Compose 配置示例
下面给出一个简化但适合生产环境参考的 docker-compose.yml 示例。
注意:Dify 官方版本更新较快,不同版本服务名称、环境变量可能有所差异。实际部署时请以官方
docker/.env.example和docker-compose.yaml为准,再根据本文进行生产化调整。
docker-compose.yml
version: "3.9"
services:
api:
image: langgenius/dify-api:latest
container_name: dify-api
restart: always
depends_on:
- db
- redis
- weaviate
env_file:
- .env
volumes:
- ./volumes/app/storage:/app/api/storage
networks:
- dify
worker:
image: langgenius/dify-api:latest
container_name: dify-worker
restart: always
depends_on:
- db
- redis
- weaviate
env_file:
- .env
command: >
celery -A app.celery worker
-P gevent
-c 1
--loglevel INFO
volumes:
- ./volumes/app/storage:/app/api/storage
networks:
- dify
web:
image: langgenius/dify-web:latest
container_name: dify-web
restart: always
depends_on:
- api
env_file:
- .env
networks:
- dify
db:
image: postgres:15-alpine
container_name: dify-db
restart: always
environment:
POSTGRES_USER: dify
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: dify
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
- ./volumes/db/data:/var/lib/postgresql/data
networks:
- dify
healthcheck:
test: ["CMD-SHELL", "pg_isready -U dify"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
container_name: dify-redis
restart: always
command: redis-server --requirepass ${REDIS_PASSWORD}
volumes:
- ./volumes/redis/data:/data
networks:
- dify
healthcheck:
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
interval: 10s
timeout: 5s
retries: 5
weaviate:
image: semitechnologies/weaviate:1.19.0
container_name: dify-weaviate
restart: always
environment:
QUERY_DEFAULTS_LIMIT: 25
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: "false"
AUTHENTICATION_APIKEY_ENABLED: "true"
AUTHENTICATION_APIKEY_ALLOWED_KEYS: ${WEAVIATE_API_KEY}
AUTHENTICATION_APIKEY_USERS: dify
PERSISTENCE_DATA_PATH: /var/lib/weaviate
DEFAULT_VECTORIZER_MODULE: none
CLUSTER_HOSTNAME: node1
volumes:
- ./volumes/weaviate:/var/lib/weaviate
networks:
- dify
nginx:
image: nginx:1.25-alpine
container_name: dify-nginx
restart: always
depends_on:
- api
- web
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/certbot/www:/var/www/certbot
- ./nginx/certs:/etc/nginx/certs
networks:
- dify
networks:
dify:
driver: bridge
六、环境变量配置文件
创建 .env 文件:
vim .env
下面是一份生产环境参考配置。
.env
# -----------------------------------------------------------------------------
# Basic
# -----------------------------------------------------------------------------
CONSOLE_WEB_URL=https://dify.example.com
APP_WEB_URL=https://dify.example.com
SERVICE_API_URL=https://dify.example.com
FILES_URL=https://dify.example.com
APP_ENV=production
LOG_LEVEL=INFO
DEBUG=false
# 建议使用 openssl rand -base64 42 生成
SECRET_KEY=please-change-this-secret-key
# -----------------------------------------------------------------------------
# Database
# -----------------------------------------------------------------------------
DB_USERNAME=dify
DB_PASSWORD=please-change-db-password
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify
SQLALCHEMY_POOL_SIZE=30
SQLALCHEMY_POOL_RECYCLE=3600
# -----------------------------------------------------------------------------
# Redis
# -----------------------------------------------------------------------------
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_USERNAME=
REDIS_PASSWORD=please-change-redis-password
REDIS_DB=0
CELERY_BROKER_URL=redis://:please-change-redis-password@redis:6379/1
# -----------------------------------------------------------------------------
# Vector Database
# -----------------------------------------------------------------------------
VECTOR_STORE=weaviate
WEAVIATE_ENDPOINT=http://weaviate:8080
WEAVIATE_API_KEY=please-change-weaviate-api-key
# -----------------------------------------------------------------------------
# Storage
# -----------------------------------------------------------------------------
STORAGE_TYPE=local
STORAGE_LOCAL_PATH=storage
# 如果使用 S3,可改为:
# STORAGE_TYPE=s3
# S3_ENDPOINT=https://s3.example.com
# S3_BUCKET_NAME=dify
# S3_ACCESS_KEY=your-access-key
# S3_SECRET_KEY=your-secret-key
# S3_REGION=ap-southeast-1
# -----------------------------------------------------------------------------
# Upload
# -----------------------------------------------------------------------------
UPLOAD_FILE_SIZE_LIMIT=50
UPLOAD_FILE_BATCH_LIMIT=5
# -----------------------------------------------------------------------------
# Mail
# -----------------------------------------------------------------------------
MAIL_TYPE=smtp
MAIL_SMTP_HOST=smtp.example.com
MAIL_SMTP_PORT=465
MAIL_SMTP_USERNAME=no-reply@example.com
MAIL_SMTP_PASSWORD=your-mail-password
MAIL_SMTP_USE_TLS=true
MAIL_SMTP_OPPORTUNISTIC_TLS=false
MAIL_FROM_EMAIL=no-reply@example.com
# -----------------------------------------------------------------------------
# Security
# -----------------------------------------------------------------------------
COOKIE_HTTPONLY=true
COOKIE_SECURE=true
COOKIE_SAMESITE=Lax
# -----------------------------------------------------------------------------
# Web
# -----------------------------------------------------------------------------
WEB_API_CORS_ALLOW_ORIGINS=https://dify.example.com
CONSOLE_CORS_ALLOW_ORIGINS=https://dify.example.com
生成安全密钥
建议不要使用示例中的密码,可以使用以下命令生成:
openssl rand -base64 42
分别生成:
SECRET_KEYDB_PASSWORDREDIS_PASSWORDWEAVIATE_API_KEY
在生产环境中,密码应妥善保存,建议使用密码管理器或云厂商 Secret Manager。
七、Nginx 反向代理配置
创建 Nginx 配置目录:
mkdir -p nginx/conf.d nginx/certs nginx/certbot/www
1. HTTP 临时配置
首次申请 HTTPS 证书前,可以先配置 HTTP。
创建文件:
vim nginx/conf.d/dify.conf
写入:
server {
listen 80;
server_name dify.example.com;
client_max_body_size 100M;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location /console/api {
proxy_pass http://api:5001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /api {
proxy_pass http://api:5001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /v1 {
proxy_pass http://api:5001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /files {
proxy_pass http://api:5001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_pass http://web:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
请将 dify.example.com 替换为你的真实域名,并确保 DNS 已解析到服务器公网 IP。
八、启动 Dify 服务
在 /opt/dify 目录执行:
docker compose up -d
查看容器状态:
docker compose ps
查看日志:
docker compose logs -f api
docker compose logs -f worker
docker compose logs -f web
如果服务启动正常,可以访问:
http://dify.example.com
首次访问时,Dify 会引导你创建管理员账号。
九、配置 HTTPS 证书
生产环境必须使用 HTTPS,尤其是涉及登录、API Key、模型调用和知识库文件上传时。
这里使用 Certbot 申请 Let’s Encrypt 免费证书。
1. 安装 Certbot
可以直接在宿主机安装:
sudo apt install -y certbot
2. 申请证书
sudo certbot certonly \
--webroot \
-w /opt/dify/nginx/certbot/www \
-d dify.example.com
证书默认生成在:
/etc/letsencrypt/live/dify.example.com/
为了让 Nginx 容器读取证书,可以复制到项目目录:
sudo mkdir -p /opt/dify/nginx/certs/dify.example.com
sudo cp /etc/letsencrypt/live/dify.example.com/fullchain.pem \
/opt/dify/nginx/certs/dify.example.com/fullchain.pem
sudo cp /etc/letsencrypt/live/dify.example.com/privkey.pem \
/opt/dify/nginx/certs/dify.example.com/privkey.pem
sudo chown -R $USER:$USER /opt/dify/nginx/certs
3. 修改 Nginx HTTPS 配置
将 nginx/conf.d/dify.conf 改为:
server {
listen 80;
server_name dify.example.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
server_name dify.example.com;
ssl_certificate /etc/nginx/certs/dify.example.com/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/dify.example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
client_max_body_size 100M;
proxy_read_timeout 300s;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
location /console/api {
proxy_pass http://api:5001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
location /api {
proxy_pass http://api:5001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
location /v1 {
proxy_pass http://api:5001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
location /files {
proxy_pass http://api:5001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
location / {
proxy_pass http://web:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}
重启 Nginx:
docker compose restart nginx
然后访问:
https://dify.example.com
十、防火墙与安全加固
1. 配置 UFW 防火墙
只开放 SSH、HTTP、HTTPS:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
如果 SSH 使用了非 22 端口,请替换为你的实际端口。
2. 不要暴露内部服务端口
PostgreSQL、Redis、Weaviate 不应该直接映射到宿主机公网端口。本文的 Compose 配置中,这些服务只在 Docker 内部网络可访问,安全性更好。
3. 修改默认密码
以下内容必须使用强随机值:
- 数据库密码;
- Redis 密码;
- Weaviate API Key;
- Dify
SECRET_KEY; - 邮箱 SMTP 密码;
- 云存储 Access Key。
4. 后台管理员账号安全
建议:
- 使用复杂密码;
- 只给必要成员开通管理员权限;
- 定期清理离职成员账号;
- 开启企业内部统一身份认证时,优先使用 SSO;
- 不要将管理员 Token 或 API Key 写入公开代码仓库。
十一、模型供应商配置建议
Dify 支持多种模型供应商,包括 OpenAI、Azure OpenAI、Anthropic、Google Gemini、DeepSeek、通义千问、智谱、火山方舟、Ollama、本地 OpenAI-Compatible 服务等。
生产环境中,建议根据业务需求选择模型:
1. 通用聊天和复杂推理
可选择:
- GPT-4o / GPT-4.1;
- Claude Sonnet;
- Gemini Pro;
- DeepSeek-R1 / DeepSeek-V3;
- Qwen Max / Qwen Plus。
2. 知识库问答
重点关注:
- Embedding 模型质量;
- 向量维度;
- 检索速度;
- 上下文窗口长度;
- 成本和限流策略。
常见 Embedding 模型包括:
- OpenAI
text-embedding-3-large; - BAAI
bge-large-zh; - Qwen Embedding;
- Cohere Embed;
- Jina Embeddings。
3. 本地模型接入
如果企业对数据安全要求较高,可以通过 Ollama、vLLM 或 Xinference 部署本地模型,然后在 Dify 中通过 OpenAI-Compatible 接口接入。
例如本地模型服务地址:
http://model-server:8000/v1
在 Dify 控制台中配置:
Provider:OpenAI-API-compatible
API Base:http://model-server:8000/v1
API Key:自定义或模型服务要求的 Key
十二、数据持久化与备份方案
Dify 生产环境最重要的数据主要包括:
- PostgreSQL 数据;
- Redis 数据;
- 向量数据库数据;
- 上传文件和知识库文档;
.env配置文件;- Nginx 证书与配置文件。
1. PostgreSQL 备份脚本
创建备份目录:
mkdir -p /opt/backup/dify/db
创建脚本:
vim /opt/backup/dify/backup-db.sh
写入:
#!/bin/bash
BACKUP_DIR="/opt/backup/dify/db"
DATE=$(date +"%Y%m%d_%H%M%S")
CONTAINER_NAME="dify-db"
DB_USER="dify"
DB_NAME="dify"
mkdir -p ${BACKUP_DIR}
docker exec ${CONTAINER_NAME} pg_dump -U ${DB_USER} ${DB_NAME} \
> ${BACKUP_DIR}/dify_${DATE}.sql
find ${BACKUP_DIR} -type f -name "*.sql" -mtime +14 -delete
echo "Database backup completed: ${BACKUP_DIR}/dify_${DATE}.sql"
赋予执行权限:
chmod +x /opt/backup/dify/backup-db.sh
手动执行测试:
/opt/backup/dify/backup-db.sh
2. 配置定时任务
crontab -e
加入:
0 2 * * * /opt/backup/dify/backup-db.sh >> /opt/backup/dify/backup.log 2>&1
表示每天凌晨 2 点自动备份数据库。
3. 文件与向量库备份
可以定期打包 volumes 目录:
tar -czf /opt/backup/dify/volumes_$(date +"%Y%m%d_%H%M%S").tar.gz /opt/dify/volumes
如果数据较大,建议使用对象存储或专业备份工具,例如 Restic、Rclone、BorgBackup 等。
十三、升级 Dify
Dify 版本更新较频繁,升级前一定要备份数据。
1. 备份数据
/opt/backup/dify/backup-db.sh
tar -czf /opt/backup/dify/dify_before_upgrade_$(date +"%Y%m%d_%H%M%S").tar.gz /opt/dify
2. 拉取新镜像
docker compose pull
3. 重启服务
docker compose down
docker compose up -d
4. 查看日志
docker compose logs -f api
docker compose logs -f worker
如果升级后出现异常,可以先查看官方 Release Notes,确认是否有环境变量变更、数据库迁移要求或服务配置调整。
十四、常见问题排查
1. Web 页面能打开,但接口报错
检查 API 服务日志:
docker compose logs -f api
常见原因:
.env中 URL 配置不正确;- Nginx 路由未正确转发
/api、/console/api、/v1; - API 容器未正常启动;
- 数据库连接失败。
2. 上传文件失败
检查:
client_max_body_size是否过小;.env中UPLOAD_FILE_SIZE_LIMIT是否过小;volumes/app/storage是否有写入权限;- API 容器日志是否报错。
3. 知识库无法索引
检查 Worker:
docker compose logs -f worker
常见原因:
- Worker 未启动;
- Redis 连接异常;
- Embedding 模型配置错误;
- 向量数据库连接失败;
- 文档格式解析失败。
4. 登录后跳转异常
检查 .env 中以下配置:
CONSOLE_WEB_URL=https://dify.example.com
APP_WEB_URL=https://dify.example.com
SERVICE_API_URL=https://dify.example.com
FILES_URL=https://dify.example.com
这些地址应与实际访问域名一致,协议也应保持一致。如果使用 HTTPS,就不要写成 HTTP。
5. HTTPS 证书续期问题
Let’s Encrypt 证书有效期通常为 90 天。可以配置自动续期:
sudo certbot renew --dry-run
如果使用了复制证书到 /opt/dify/nginx/certs 的方式,续期后还需要同步证书并重启 Nginx。可以写一个脚本自动完成。
十五、生产环境优化建议
1. 使用固定镜像版本
生产环境不建议长期使用 latest,因为升级不可控。建议指定明确版本,例如:
image: langgenius/dify-api:0.x.x
image: langgenius/dify-web:0.x.x
这样可以避免容器重建时意外升级。
2. 数据库独立部署
如果业务规模变大,建议将 PostgreSQL 独立部署到云数据库,例如:
- AWS RDS;
- 阿里云 RDS;
- 腾讯云 TDSQL-C;
- 华为云 RDS;
- 自建 PostgreSQL 高可用集群。
这样可以获得更好的备份、监控、性能和高可用能力。
3. Redis 独立部署
生产环境高并发场景下,Redis 也建议使用云 Redis 或独立 Redis 集群,避免和应用服务争抢资源。
4. 使用对象存储
如果知识库文件较多,不建议长期使用本地存储。可以改用 S3 兼容对象存储,例如:
- AWS S3;
- 阿里云 OSS;
- 腾讯云 COS;
- MinIO;
- Cloudflare R2。
对象存储更适合生产环境的数据可靠性和扩展需求。
5. 日志监控
建议接入:
- Prometheus + Grafana;
- Loki;
- ELK / OpenSearch;
- 云厂商日志服务;
- Uptime Kuma;
- Sentry。
至少应监控以下指标:
- CPU、内存、磁盘;
- 容器运行状态;
- PostgreSQL 连接数;
- Redis 内存使用;
- API 错误率;
- Worker 任务积压;
- Nginx 访问日志和错误日志。
十六、推荐目录结构
最终目录结构可以参考:
/opt/dify
├── docker-compose.yml
├── .env
├── nginx
│ ├── conf.d
│ │ └── dify.conf
│ ├── certs
│ │ └── dify.example.com
│ │ ├── fullchain.pem
│ │ └── privkey.pem
│ └── certbot
│ └── www
└── volumes
├── app
│ └── storage
├── db
│ └── data
├── redis
│ └── data
└── weaviate
该结构清晰地分离了:
- 服务编排配置;
- 环境变量;
- Nginx 配置;
- HTTPS 证书;
- 应用数据;
- 数据库数据;
- 缓存数据;
- 向量库数据。
十七、部署检查清单
上线前建议逐项检查:
- [ ] 域名已正确解析到服务器;
- [ ] HTTPS 可正常访问;
- [ ] HTTP 自动跳转 HTTPS;
- [ ]
.env中所有默认密码已修改; - [ ]
SECRET_KEY已使用随机值; - [ ] PostgreSQL、Redis、Weaviate 未暴露公网端口;
- [ ] 防火墙仅开放必要端口;
- [ ] 管理员账号已创建;
- [ ] 模型供应商已配置;
- [ ] Embedding 模型可正常使用;
- [ ] 知识库上传和索引正常;
- [ ] 应用 API 调用正常;
- [ ] 数据库备份脚本可执行;
- [ ] 已配置定时备份;
- [ ] 已记录恢复流程;
- [ ] 已制定升级策略。
十八、总结
Dify 的 Docker Compose 部署方式非常适合快速搭建生产环境,但真正稳定可用的生产部署并不只是“启动容器”这么简单。你还需要重点关注域名、HTTPS、安全配置、数据持久化、备份恢复、模型供应商、向量数据库、日志监控和升级策略。
对于小团队或内部项目,可以先使用本文提供的单机 Docker Compose 架构部署;当业务规模扩大后,再逐步将 PostgreSQL、Redis、对象存储和向量数据库拆分为独立服务,并引入监控告警与高可用架构。
如果你的目标是将 Dify 用作企业级 AI 应用平台,建议至少做到以下几点:
- 使用 HTTPS 和独立域名;
- 使用强随机密钥和密码;
- 配置自动备份;
- 不暴露内部数据库服务;
- 使用对象存储保存文件;
- 固定镜像版本并谨慎升级;
- 持续监控 API、Worker、数据库和向量库状态。
按照本文步骤完成后,你就可以得到一个相对规范、安全、可维护的 Dify 生产环境,为后续构建 AI 助手、知识库问答、工作流应用和企业智能体打下稳定基础。