Docker 部署 Dify:5 分钟搭建私有 AI 工作流平台
从零开始使用 Docker Compose 部署 Dify 平台,涵盖环境准备、安装配置、模型接入、知识库搭建和 Agent 编排,帮助你快速拥有一个私有化的 AI 应用开发平台
什么是 Dify
Dify 是一个开源的 LLM 应用开发平台,提供了可视化的 AI 工作流编排、RAG(检索增强生成)管道、Agent 智能体和模型管理能力。通过 Dify,你可以快速构建和部署基于大语言模型的 AI 应用,而无需深厚的机器学习背景。
Dify 能做什么
- 聊天助手:基于 LLM 构建对话式 AI 应用
- 知识库(RAG):上传文档,让 AI 基于私有知识回答问题
- AI 工作流:可视化编排多步骤 AI 任务流程
- Agent 智能体:让 AI 自主调用工具、搜索信息、执行任务
- 模型管理:统一管理 OpenAI、Claude、本地 Ollama 等多种模型
为什么选择 Dify
| 对比维度 | Dify | LangChain | 直接调用 API |
|---|---|---|---|
| 上手难度 | 低(可视化界面) | 高(需要编程) | 中(需要写代码) |
| 知识库 | 内置 RAG 引擎 | 需手动搭建 | 不支持 |
| 工作流 | 拖拽式编排 | 代码编排 | 不支持 |
| 多模型 | 统一管理 | 需手动适配 | 各自调用 |
| 部署方式 | Docker 一键部署 | 代码集成 | 无需部署 |
| 适用人群 | 开发者、产品经理 | 开发者 | 开发者 |
Dify 架构概览
Dify 采用前后端分离的微服务架构,核心组件包括:

各组件说明
- Web 前端:基于 Next.js 构建的用户界面,提供服务端渲染
- API 服务:基于 Flask 的后端 API,处理业务逻辑
- Worker:基于 Celery 的异步任务队列,处理耗时操作
- PostgreSQL:存储用户、应用、对话等业务数据
- Redis:缓存和任务队列的消息代理
- 向量数据库:存储文档的向量嵌入,支持语义检索(可选 Weaviate、Qdrant、Milvus 等)
环境准备
硬件要求
| 配置项 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 2 核 | 4 核以上 |
| 内存 | 4 GB | 8 GB 以上 |
| 磁盘 | 20 GB | 50 GB 以上 |
| 操作系统 | Linux / macOS / Windows(WSL2) | Linux |
注意:如果使用本地大模型(如 Ollama),内存建议 16 GB 以上,且需要 NVIDIA 显卡(可选)。
软件要求
# 检查 Docker 版本(需要 20.10 以上)
docker --version
# Docker version 24.0.7, build afdd53b
# 检查 Docker Compose 版本(需要 2.0 以上)
docker compose version
# Docker Compose version v2.23.0
# 确保 Docker 服务正在运行
docker info
安装 Docker(如未安装)
# Ubuntu/Debian
curl -fsSL https://get.docker.com | bash
sudo usermod -aG docker $USER
# 安装 Docker Compose 插件
sudo apt-get install docker-compose-plugin
# 重新登录使权限生效
newgrp docker
部署 Dify
第一步:克隆项目
# 克隆 Dify 官方仓库
git clone https://github.com/langgenius/dify.git
cd dify/docker
# 查看目录结构
ls -la
# 输出:
# docker-compose.yaml # 主编排文件
# .env.example # 环境变量模板
# nginx/ # Nginx 配置
# volumes/ # 数据持久化目录
第二步:配置环境变量
# 复制环境变量模板
cp .env.example .env
# 编辑配置文件
vim .env
关键配置项说明:
# ===== 基础配置 =====
# 部署模式(community 为社区版)
COMPOSE_PROFILES=community
# 访问端口(默认 80,如果被占用可改为 8080)
EXPOSE_NGINX_PORT=80
# 密钥(请务必修改为随机字符串)
SECRET_KEY=dify-ai-generated-secret-key-change-me
# ===== 数据库配置 =====
# PostgreSQL 密码(生产环境请修改)
DB_PASSWORD=difyai123456
# ===== 模型提供商 =====
# OpenAI(如果使用)
OPENAI_API_KEY=sk-your-openai-api-key
# 如果只用本地模型,可以不填 OpenAI 配置
安全提醒:生产环境务必将
SECRET_KEY和DB_PASSWORD改为强密码。
第三步:启动服务
# 启动所有服务(后台运行)
docker compose up -d
# 查看启动日志
docker compose logs -f
# 等待所有服务启动完成(约 1-2 分钟)
# 看到以下日志表示启动成功:
# api_1 | * Running on http://0.0.0.0:5001
# web_1 | ✓ Ready in 45s
# worker_1 | celery@worker ready.
第四步:验证部署
# 检查所有容器状态
docker compose ps
# 期望输出:
# NAME STATUS PORTS
# docker-api-1 Up 2 minutes 0.0.0.0:5001->5001/tcp
# docker-web-1 Up 2 minutes 0.0.0.0:3000->3000/tcp
# docker-worker-1 Up 2 minutes
# docker-db-1 Up 2 minutes 5432/tcp
# docker-redis-1 Up 2 minutes 6379/tcp
# docker-nginx-1 Up 2 minutes 0.0.0.0:80->80/tcp
# docker-weaviate-1 Up 2 minutes
# docker-sandbox-1 Up 2 minutes
# 检查端口监听
netstat -tlnp | grep -E '80|3000|5001'
第五步:访问 Dify
打开浏览器访问 http://你的服务器IP(本地部署访问 http://localhost):
- 首次访问会进入初始化页面,设置管理员邮箱和密码
- 登录后进入 Dify 主界面
- 在右上角头像 → 设置 → 模型供应商 中配置模型
初始化流程:
设置管理员账号 → 进入主页面 → 配置模型 → 创建应用
接入大模型
Dify 支持接入多种模型提供商,以下是几种常见配置:
方式一:接入 OpenAI
# 在 .env 中配置
OPENAI_API_KEY=sk-your-openai-api-key
在 Dify 管理后台 → 设置 → 模型供应商 → OpenAI → 填入 API Key 即可。
方式二:接入本地 Ollama(推荐)
如果你已经在本地部署了 Ollama,可以直接接入:
# 1. 确保 Ollama 正在运行
ollama list
# 输出:
# NAME ID SIZE MODIFIED
# qwen2.5:7b abc123def456 4.7 GB 2 days ago
# 2. 在 Dify 的 .env 中添加 Ollama 地址
# 如果 Ollama 和 Dify 在同一台机器上,使用 host.docker.internal
# 或宿主机的内网 IP
OLLAMA_HOST=http://host.docker.internal:11434
在 Dify 后台 → 设置 → 模型供应商 → Ollama:
- 填写 Ollama 地址:
http://host.docker.internal:11434 - 点击"添加模型",输入模型名称(如
qwen2.5:7b) - 保存后即可使用
提示:如果 Ollama 在另一台机器上,将地址改为
http://192.168.x.x:11434。
方式三:接入其他国产模型
Dify 还支持多种国产模型:
| 模型提供商 | 接入方式 | 需要的信息 |
|---|---|---|
| 通义千问 | 阿里云 API | API Key |
| 文心一言 | 百度智能云 | API Key + Secret Key |
| 智谱 GLM | 智谱 API | API Key |
| DeepSeek | DeepSeek API | API Key |
| Moonshot | 月之暗面 | API Key |
在 Dify 后台 → 设置 → 模型供应商 中,选择对应的提供商,填入 API Key 即可。
常用管理命令
服务管理
# 进入 Dify 部署目录
cd dify/docker
# 启动所有服务
docker compose up -d
# 停止所有服务
docker compose down
# 重启服务
docker compose restart
# 查看服务状态
docker compose ps
# 查看实时日志
docker compose logs -f
# 查看特定服务日志
docker compose logs -f api
docker compose logs -f web
docker compose logs -f worker
# 更新 Dify 版本
git pull origin main
docker compose down
docker compose pull
docker compose up -d
数据备份
# 备份 PostgreSQL 数据库
docker exec -t docker-db-1 pg_dump -U postgres dify > dify_backup_$(date +%Y%m%d).sql
# 备份整个数据目录
tar -czf dify_backup_$(date +%Y%m%d).tar.gz volumes/
# 恢复数据库
docker exec -i docker-db-1 psql -U postgres dify < dify_backup_20250101.sql
资源监控
# 查看容器资源使用
docker stats
# 查看磁盘占用
docker system df
# 查看 Dify 相关镜像大小
docker images | grep dify
常见问题排查
问题 1:端口被占用
# 错误信息:port is already allocated
# 检查端口占用
netstat -tlnp | grep :80
# 或
lsof -i :80
# 解决方案:修改 .env 中的端口
EXPOSE_NGINX_PORT=8080
# 然后重启服务
docker compose down && docker compose up -d
问题 2:无法连接 Ollama
# 症状:Dify 后台添加 Ollama 模型时连接失败
# 1. 确认 Ollama 正在运行
curl http://localhost:11434/api/tags
# 2. 如果 Dify 和 Ollama 在同一台机器
# 在 .env 中使用 host.docker.internal
OLLAMA_HOST=http://host.docker.internal:11434
# 3. 如果是 Linux 系统,需要添加 extra_hosts
# 在 docker-compose.yaml 的 api 服务中添加:
# extra_hosts:
# - "host.docker.internal:host-gateway"
# 4. 或者使用宿主机的实际 IP
OLLAMA_HOST=http://192.168.1.100:11434
问题 3:知识库文档处理失败
# 症状:上传文档后一直显示"处理中"或失败
# 1. 检查 Worker 服务状态
docker compose logs worker | grep -i error
# 2. 检查向量数据库状态
docker compose ps weaviate
# 3. 重启 Worker 服务
docker compose restart worker
# 4. 检查磁盘空间(向量存储需要空间)
df -h
问题 4:内存不足
# 症状:服务频繁重启,系统 OOM
# 1. 查看容器内存使用
docker stats --no-stream
# 2. 为容器设置内存限制
# 在 docker-compose.yaml 中相关服务添加:
# deploy:
# resources:
# limits:
# memory: 2G
# 3. 如果使用本地模型,建议:
# - 使用更小的模型(如 qwen2.5:1.5b)
# - 增加交换空间
# - 升级物理内存
问题 5:数据库连接失败
# 症状:API 服务启动失败,日志显示数据库连接错误
# 1. 检查 PostgreSQL 容器状态
docker compose ps db
# 2. 查看数据库日志
docker compose logs db
# 3. 重置数据库(谨慎操作!会丢失数据)
docker compose down -v
docker compose up -d
生产环境优化建议
1. 安全加固
# 修改 .env 中的关键配置
SECRET_KEY=$(openssl rand -hex 32) # 生成随机密钥
DB_PASSWORD=$(openssl rand -base64 24) # 生成随机数据库密码
REDIS_PASSWORD=$(openssl rand -base64 24) # 生成随机 Redis 密码
# 配置 HTTPS(使用 Nginx 反向代理)
# 在 nginx 配置中添加 SSL 证书
2. 性能优化
# docker-compose.yaml 优化示例
services:
api:
deploy:
resources:
limits:
memory: 4G
reservations:
memory: 2G
environment:
# 增加 Worker 进程数
- WORKER_COUNT=4
db:
deploy:
resources:
limits:
memory: 2G
volumes:
# 使用 SSD 存储
- /data/dify/postgres:/var/lib/postgresql/data
3. 监控和日志
# 配置日志轮转(防止磁盘占满)
# 在 docker-compose.yaml 中为每个服务添加:
# logging:
# driver: "json-file"
# options:
# max-size: "10m"
# max-file: "3"
# 监控关键指标
docker compose ps # 服务状态
docker stats # 资源使用
df -h # 磁盘空间
4. 定期维护
# 每天:检查服务状态
docker compose ps
# 每周:清理 Docker 资源
docker system prune -f
# 每月:备份数据库
docker exec -t docker-db-1 pg_dump -U postgres dify > backup_$(date +%Y%m).sql
# 定期更新 Dify
cd dify/docker
git pull origin main
docker compose pull
docker compose down
docker compose up -d
总结
通过 Docker Compose 部署 Dify,你可以在几分钟内拥有一个功能完整的私有 AI 工作流平台。本文涵盖了:
✅ Dify 的架构和核心概念
✅ 完整的 Docker 部署流程
✅ 多种大模型接入方式
✅ 知识库和 AI 应用的创建
✅ 常见问题的排查和解决
✅ 生产环境的优化建议
部署清单
| 步骤 | 操作 | 预计时间 |
|---|---|---|
| 1 | 环境准备(Docker 安装) | 5 分钟 |
| 2 | 克隆项目 + 配置 .env | 2 分钟 |
| 3 | docker compose up -d | 1 分钟 |
| 4 | 初始化管理员账号 | 1 分钟 |
| 5 | 配置模型供应商 | 2 分钟 |
| 6 | 创建第一个应用 | 5 分钟 |
下一步
- 尝试接入不同的模型,对比效果
- 搭建企业知识库,提升团队效率
- 探索 AI 工作流,实现自动化任务
- 将 Dify 应用嵌入你的网站或产品中