AI2025-01-1525 分钟阅读

Docker 部署 Dify:5 分钟搭建私有 AI 工作流平台

从零开始使用 Docker Compose 部署 Dify 平台,涵盖环境准备、安装配置、模型接入、知识库搭建和 Agent 编排,帮助你快速拥有一个私有化的 AI 应用开发平台

DifyDockerAIRAG大模型工作流

什么是 Dify

Dify 是一个开源的 LLM 应用开发平台,提供了可视化的 AI 工作流编排、RAG(检索增强生成)管道、Agent 智能体和模型管理能力。通过 Dify,你可以快速构建和部署基于大语言模型的 AI 应用,而无需深厚的机器学习背景。

Dify 能做什么

  • 聊天助手:基于 LLM 构建对话式 AI 应用
  • 知识库(RAG):上传文档,让 AI 基于私有知识回答问题
  • AI 工作流:可视化编排多步骤 AI 任务流程
  • Agent 智能体:让 AI 自主调用工具、搜索信息、执行任务
  • 模型管理:统一管理 OpenAI、Claude、本地 Ollama 等多种模型

为什么选择 Dify

对比维度DifyLangChain直接调用 API
上手难度低(可视化界面)高(需要编程)中(需要写代码)
知识库内置 RAG 引擎需手动搭建不支持
工作流拖拽式编排代码编排不支持
多模型统一管理需手动适配各自调用
部署方式Docker 一键部署代码集成无需部署
适用人群开发者、产品经理开发者开发者

Dify 架构概览

Dify 采用前后端分离的微服务架构,核心组件包括:

Dify 架构图

各组件说明

  • Web 前端:基于 Next.js 构建的用户界面,提供服务端渲染
  • API 服务:基于 Flask 的后端 API,处理业务逻辑
  • Worker:基于 Celery 的异步任务队列,处理耗时操作
  • PostgreSQL:存储用户、应用、对话等业务数据
  • Redis:缓存和任务队列的消息代理
  • 向量数据库:存储文档的向量嵌入,支持语义检索(可选 Weaviate、Qdrant、Milvus 等)

环境准备

硬件要求

配置项最低要求推荐配置
CPU2 核4 核以上
内存4 GB8 GB 以上
磁盘20 GB50 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_KEYDB_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):

  1. 首次访问会进入初始化页面,设置管理员邮箱和密码
  2. 登录后进入 Dify 主界面
  3. 在右上角头像 → 设置模型供应商 中配置模型
初始化流程:
  设置管理员账号 → 进入主页面 → 配置模型 → 创建应用

接入大模型

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

  1. 填写 Ollama 地址:http://host.docker.internal:11434
  2. 点击"添加模型",输入模型名称(如 qwen2.5:7b
  3. 保存后即可使用

提示:如果 Ollama 在另一台机器上,将地址改为 http://192.168.x.x:11434

方式三:接入其他国产模型

Dify 还支持多种国产模型:

模型提供商接入方式需要的信息
通义千问阿里云 APIAPI Key
文心一言百度智能云API Key + Secret Key
智谱 GLM智谱 APIAPI Key
DeepSeekDeepSeek APIAPI 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克隆项目 + 配置 .env2 分钟
3docker compose up -d1 分钟
4初始化管理员账号1 分钟
5配置模型供应商2 分钟
6创建第一个应用5 分钟

下一步

  • 尝试接入不同的模型,对比效果
  • 搭建企业知识库,提升团队效率
  • 探索 AI 工作流,实现自动化任务
  • 将 Dify 应用嵌入你的网站或产品中

参考资料