Dify 平台容器化部署完全指南
1 环境准备与兼容性检查
1.1 系统需求验证
您需要确保部署环境满足以下最低要求:
| 组件 | 最低版本 | 推荐版本 |
|---|---|---|
| Docker | 20.10.0 | 24.0.0+ |
| Docker Compose | 2.0.0 | 2.20.0+ |
| 内存 | 4GB | 8GB+ |
| 磁盘空间 | 10GB | 20GB+ SSD |
▶️ 检查当前环境版本:
docker --version
docker compose version
⚠️ 注意:生产环境建议使用Ubuntu 20.04 LTS或更高版本的操作系统,确保内核支持容器技术。
📌 要点总结:验证系统兼容性是部署的基础,过时的Docker版本可能导致服务启动失败或性能问题。
1.2 资源规划建议
根据预期使用规模,推荐以下硬件配置:
| 部署规模 | CPU核心 | 内存 | 存储 | 适用场景 |
|---|---|---|---|---|
| 开发测试 | 2核 | 4GB | 20GB | 功能验证、小型团队试用 |
| 中小型生产 | 4核 | 16GB | 100GB SSD | 50人以内团队日常使用 |
| 大型生产 | 8核+ | 32GB+ | 500GB+ SSD | 企业级应用、高并发场景 |
📌 要点总结:合理的资源规划可避免性能瓶颈,向量数据库对内存要求较高,生产环境建议单独部署。
1.3 网络环境配置
请确保服务器开放以下端口:
| 端口 | 用途 | 访问控制建议 |
|---|---|---|
| 80/tcp | HTTP流量 | 仅用于Certbot验证,日常关闭 |
| 443/tcp | HTTPS流量 | 对公网开放 |
| 5432/tcp | PostgreSQL数据库 | 仅容器内部访问 |
| 6379/tcp | Redis服务 | 仅容器内部访问 |
⚠️ 注意:生产环境应配置防火墙,仅开放必要端口,并设置适当的网络隔离。
📌 要点总结:网络配置直接影响服务可用性和安全性,需根据实际环境调整。
2 部署实施与配置
2.1 项目获取与环境初始化
预计完成时间:5分钟
▶️ 获取项目代码:
git clone https://gitcode.com/GitHub_Trending/di/dify
cd dify/docker
▶️ 复制环境配置文件:
cp .env.example .env
cp middleware.env.example middleware.env
⚠️ 注意:如无Git环境,可通过项目页面下载源码包并解压。
📌 要点总结:初始化阶段主要完成项目获取和配置文件准备,为后续部署奠定基础。
2.2 核心配置参数设置
预计完成时间:15分钟
使用文本编辑器打开.env文件,配置以下关键参数:
DB_USERNAME说明:PostgreSQL数据库用户名,默认值:postgres
DB_PASSWORD说明:数据库密码,建议设置强密码
DB_HOST说明:数据库服务地址,容器部署保持默认值db
DB_PORT说明:数据库端口,默认值:5432
DB_DATABASE说明:数据库名称,默认值:dify
REDIS_HOST说明:Redis服务地址,容器部署保持默认值redis
REDIS_PORT说明:Redis端口,默认值:6379
REDIS_PASSWORD说明:Redis访问密码
VECTOR_STORE说明:向量数据库(存储和检索高维向量数据的专用数据库)类型,可选值:weaviate, milvus, opensearch
STORAGE_TYPE说明:文件存储类型,可选值:local, s3, azure_blob, google_storage
⚠️ 注意:所有密码应符合复杂度要求,至少包含8个字符,包括大小写字母、数字和特殊符号。
📌 要点总结:核心配置决定了服务的基本运行方式,特别是数据库和存储配置需仔细核对。
2.3 首次部署流程
预计完成时间:30分钟
▶️ 启动基础服务组合:
docker compose up -d
▶️ 如果需要使用特定向量数据库(以Weaviate为例):
docker compose -f docker-compose.yaml --profile weaviate up -d
▶️ 执行数据库迁移:
docker compose exec api flask db upgrade
▶️ 创建初始管理员账户:
docker compose exec api flask create-admin
⚠️ 注意:首次启动可能需要较长时间拉取镜像,请确保网络通畅。
📌 要点总结:首次部署需要完成镜像拉取、容器启动、数据库初始化等多个步骤,耐心等待所有服务就绪。
2.4 升级部署流程
预计完成时间:20分钟
▶️ 拉取最新代码和镜像:
cd dify
git pull
cd docker
docker compose pull
▶️ 重启服务并执行迁移:
docker compose up -d
docker compose exec api flask db upgrade
⚠️ 注意:升级前请务必备份数据库,重大版本更新建议先在测试环境验证。
📌 要点总结:升级部署需注意数据安全,遵循先备份后升级的原则,确保服务平滑过渡。
2.5 SSL证书配置
预计完成时间:10分钟
-
在
.env文件中设置域名:APP_HOST说明:服务访问域名,如:dify.example.com -
▶️ 初始化SSL证书:
docker compose up certbot-init
- ▶️ 设置自动续期:
docker compose up certbot-renew
⚠️ 注意:SSL配置需要公网可访问的域名,内网环境可跳过此步骤。
📌 要点总结:SSL证书是生产环境的必要配置,确保数据传输安全,同时避免浏览器安全警告。
3 系统优化与运维
3.1 性能参数调优
根据服务器配置调整以下性能参数:
WEB_CONCURRENCY说明:API服务工作进程数,建议设置为CPU核心数的2倍
CELERY_WORKER_CONCURRENCY说明:Celery工作进程数,建议设置为CPU核心数
▶️ 修改配置后重启服务:
docker compose down
docker compose up -d
📌 要点总结:适当的性能调优可显著提升系统响应速度和并发处理能力。
3.2 监控与日志管理
启用OpenTelemetry监控:
ENABLE_OTEL说明:是否启用OpenTelemetry监控,值:true/false
OTLP_BASE_ENDPOINT说明:监控数据收集端点地址
▶️ 查看服务日志:
# 查看API服务日志
docker compose logs -f api
# 查看特定时间段日志
docker compose logs --since 30m api
📌 要点总结:完善的监控和日志系统是排查问题和保障系统稳定运行的关键。
3.3 存储后端配置
除默认本地存储外,支持多种云存储方案,以S3为例:
STORAGE_TYPE说明:设置为s3
S3_BUCKET_NAME说明:S3存储桶名称
S3_ACCESS_KEY说明:访问密钥
S3_SECRET_KEY说明:密钥
S3_REGION说明:存储区域
⚠️ 注意:使用云存储时,确保访问权限配置正确,避免数据泄露或访问失败。
📌 要点总结:选择合适的存储方案可提高数据可靠性和访问速度,降低本地存储压力。
3.4 故障排查决策树
当系统出现问题时,可按照以下步骤排查:
-
服务无法启动
- 检查容器状态:
docker compose ps - 查看日志:
docker compose logs [服务名] - 检查端口占用:
netstat -tulpn
- 检查容器状态:
-
数据库连接失败
- 检查数据库容器状态
- 验证数据库配置参数
- 查看数据库日志:
docker compose logs db
-
API响应缓慢
- 检查系统资源使用:
docker stats - 查看API日志是否有错误
- 检查数据库查询性能
- 检查系统资源使用:
-
向量数据库问题
- 确认向量数据库服务状态
- 检查内存使用情况
- 验证向量数据库连接参数
📌 要点总结:系统故障排查应遵循从整体到局部、从表象到本质的原则,逐步缩小问题范围。
4 部署后验证与维护
4.1 服务可用性验证
预计完成时间:5分钟
▶️ 检查所有服务状态:
docker compose ps
所有服务应显示为"Up"状态。访问配置的域名,应能正常加载Dify界面并完成注册登录流程。
📌 要点总结:部署后需验证核心功能可用性,确保服务正常运行。
4.2 数据备份策略
制定定期备份计划:
- 数据库备份:
docker compose exec db pg_dump -U postgres dify > dify_backup_$(date +%Y%m%d).sql
- 配置文件备份:
cp .env .env_backup_$(date +%Y%m%d)
cp middleware.env middleware.env_backup_$(date +%Y%m%d)
- 建议设置定时任务自动备份,并将备份文件存储在外部存储。
📌 要点总结:数据是系统的核心资产,定期备份是保障数据安全的重要措施。
4.3 安全最佳实践
- 定期更新镜像:
docker compose pull
docker compose up -d
- 限制容器资源:在docker-compose.yaml中设置资源限制
- 定期更换密码:更新.env文件后重启服务
- 启用网络隔离:配置容器网络,限制跨容器访问
📌 要点总结:安全是一个持续过程,需定期更新和加固系统,防范潜在风险。
通过以上步骤,您已完成Dify平台的容器化部署。这套部署方案不仅简化了安装过程,还提供了良好的可扩展性和维护性,可满足从开发测试到生产环境的各种需求。随着业务发展,您可以根据实际需求调整配置和资源,确保系统持续稳定运行。
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0245- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
HivisionIDPhotos⚡️HivisionIDPhotos: a lightweight and efficient AI ID photos tools. 一个轻量级的AI证件照制作算法。Python05

