从零搭建 Dify:Docker 一键部署完整指南
Dify Docker部署教程|一键部署
前言
近年来,随着大语言模型和智能体应用的快速发展,越来越多的开发者、企业和团队开始关注如何快速搭建属于自己的 AI 应用平台。Dify 正是其中非常受欢迎的一款开源项目。它集成了大语言模型应用开发、Prompt 编排、知识库、工作流、Agent、API 发布等能力,可以帮助用户快速构建 AI 聊天机器人、企业知识库问答系统、自动化工作流以及各类智能应用。
对于初学者来说,直接从源码部署 Dify 可能会涉及较多环境配置,例如 Python、Node.js、数据库、Redis、向量数据库等,部署过程相对复杂。而使用 Docker 部署,则可以大大降低环境配置成本。Docker 能够将应用及其依赖封装在容器中,通过 Docker Compose 一键启动多个服务,非常适合个人学习、测试环境以及中小型团队快速部署。
本文将详细介绍如何通过 Docker 方式一键部署 Dify,包括服务器准备、环境安装、项目拉取、配置文件修改、服务启动、访问后台、常见问题排查以及后续维护等内容。即使你是 Docker 新手,也可以按照本文步骤完成部署。
一、Dify 是什么?
Dify 是一个开源的大语言模型应用开发平台,支持可视化创建 AI 应用。它的核心能力包括:
- Chatbot 应用构建:快速创建聊天机器人;
- Agent 智能体:支持工具调用、任务规划等能力;
- Workflow 工作流:通过可视化节点编排复杂 AI 业务逻辑;
- 知识库问答:支持上传文档并构建企业私有知识库;
- 多模型接入:支持 OpenAI、Azure OpenAI、Anthropic、Gemini、通义千问、智谱、DeepSeek、本地模型等;
- API 发布:可以将创建好的 AI 应用通过 API 对外提供服务;
- 团队协作:支持工作空间、成员管理等功能。
简单来说,Dify 可以帮助你从“调用大模型接口”进一步升级到“搭建完整 AI 应用系统”。
二、为什么推荐使用 Docker 部署 Dify?
Dify 的运行依赖多个服务组件,例如:
- Web 前端服务;
- API 后端服务;
- Worker 异步任务服务;
- PostgreSQL 数据库;
- Redis 缓存服务;
- 向量数据库;
- Nginx 网关;
- Sandbox 代码执行服务等。
如果手动安装和配置这些组件,会比较繁琐,也容易因为版本不一致导致部署失败。而 Docker Compose 可以通过一个配置文件同时管理多个容器服务。
使用 Docker 部署 Dify 的优点主要有:
-
部署简单
不需要分别安装数据库、Redis、后端环境、前端环境,只需要 Docker 和 Docker Compose。 -
环境隔离
所有服务都运行在容器中,不容易污染宿主机环境。 -
升级方便
后续更新 Dify 版本时,只需要拉取最新代码和镜像,然后重新启动服务。 -
便于迁移
如果需要更换服务器,可以备份配置文件和数据卷,迁移相对方便。 -
适合快速测试和生产试运行
对个人开发者、小团队来说,Docker 是最友好的部署方式。
三、服务器环境准备
在正式部署之前,需要先准备一台服务器。推荐配置如下:
| 项目 | 推荐配置 |
|---|---|
| 操作系统 | Ubuntu 20.04 / Ubuntu 22.04 / Debian 11+ / CentOS 7+ |
| CPU | 2 核及以上 |
| 内存 | 至少 4GB,推荐 8GB 以上 |
| 磁盘 | 至少 20GB,推荐 50GB 以上 |
| 网络 | 可访问 GitHub、Docker Hub |
| 端口 | 默认需要开放 80、443 或自定义访问端口 |
如果只是本地测试,也可以在自己的电脑上部署,例如 macOS、Windows WSL2 或 Linux 桌面系统。但如果用于公网访问,建议使用云服务器。
本文以下操作以 Ubuntu 22.04 为例,其他 Linux 发行版命令可能略有差异。
四、安装 Docker
如果服务器已经安装 Docker,可以跳过本步骤。
1. 更新系统软件包
sudo apt update
sudo apt upgrade -y
2. 安装必要依赖
sudo apt install -y ca-certificates curl gnupg lsb-release git
3. 安装 Docker
可以使用 Docker 官方脚本快速安装:
curl -fsSL https://get.docker.com | bash
安装完成后,查看 Docker 版本:
docker version
如果能够正常显示版本信息,说明 Docker 安装成功。
4. 设置 Docker 开机自启
sudo systemctl enable docker
sudo systemctl start docker
5. 将当前用户加入 Docker 用户组
如果不想每次执行 Docker 命令都输入 sudo,可以执行:
sudo usermod -aG docker $USER
执行后需要重新登录服务器,或者执行:
newgrp docker
然后测试:
docker ps
如果没有报权限错误,说明配置成功。
五、安装 Docker Compose
新版 Docker 通常已经集成了 Compose 插件,可以通过以下命令检查:
docker compose version
如果能够显示版本,例如:
Docker Compose version v2.x.x
说明已经安装完成。
如果没有安装,可以执行:
sudo apt install -y docker-compose-plugin
再次验证:
docker compose version
注意:现在推荐使用
docker compose,中间是空格;旧版本命令是docker-compose,中间有短横线。
六、拉取 Dify 项目代码
进入你希望存放项目的目录,例如 /opt:
cd /opt
克隆 Dify 官方仓库:
git clone https://github.com/langgenius/dify.git
进入 Docker 部署目录:
cd dify/docker
查看目录文件:
ls
一般可以看到类似以下文件:
docker-compose.yaml
.env.example
nginx
volumes
Dify 官方已经提供了 Docker Compose 配置,我们只需要基于示例环境文件进行配置即可。
七、配置环境变量
复制 .env.example 为 .env:
cp .env.example .env
然后使用编辑器打开:
nano .env
或者:
vim .env
Dify 的 .env 配置项比较多,初次部署时可以先使用默认配置,但建议重点关注以下几个配置。
1. 设置访问地址
根据你的部署环境修改控制台地址、API 地址、Web 地址等配置。常见配置项可能包括:
CONSOLE_WEB_URL=
APP_WEB_URL=
SERVICE_API_URL=
如果你只是本地或服务器 IP 访问,可以先保持默认,或者设置为:
CONSOLE_WEB_URL=http://你的服务器IP
APP_WEB_URL=http://你的服务器IP
SERVICE_API_URL=http://你的服务器IP
如果你绑定了域名,例如:
dify.example.com
则可以设置为:
CONSOLE_WEB_URL=https://dify.example.com
APP_WEB_URL=https://dify.example.com
SERVICE_API_URL=https://dify.example.com
如果只是首次测试,建议先不要急着配置 HTTPS,先使用 HTTP 确认服务可以正常运行。
2. 修改密钥配置
.env 中通常会包含一些密钥,例如:
SECRET_KEY=
建议不要使用默认值。可以通过下面命令生成一个随机字符串:
openssl rand -base64 42
然后填入:
SECRET_KEY=生成的随机字符串
密钥用于保护系统安全,生产环境一定要修改。
3. 数据库和 Redis 配置
Docker Compose 默认会启动 PostgreSQL 和 Redis。一般情况下,初次部署不需要额外修改数据库配置。但如果是生产环境,建议修改默认数据库密码,例如:
DB_USERNAME=postgres
DB_PASSWORD=请设置一个强密码
Redis 也建议设置密码,具体字段以当前版本 .env.example 为准。
4. 向量数据库配置
Dify 支持多种向量数据库,例如 Weaviate、Qdrant、Milvus、PGVector 等。Docker 默认配置通常会包含一种默认向量数据库方案。个人测试可以先使用默认配置,不建议一开始就修改太多内容。
如果后续要搭建企业知识库,并且数据量较大,可以根据实际情况选择更合适的向量数据库。
5. 模型供应商配置
Dify 不一定需要在 .env 中提前配置 OpenAI Key。很多模型供应商可以在 Dify Web 控制台中配置,例如:
- OpenAI;
- Azure OpenAI;
- Anthropic;
- DeepSeek;
- 通义千问;
- 智谱 AI;
- 百度千帆;
- Ollama;
- LocalAI;
- OpenAI API 兼容服务等。
因此,首次部署时可以先完成平台搭建,登录后台后再添加模型供应商。
八、一键启动 Dify
确认当前目录在:
/opt/dify/docker
然后执行:
docker compose up -d
该命令会自动拉取所需镜像,并在后台启动所有服务。
首次启动时,由于需要下载多个 Docker 镜像,耗时可能较长,具体取决于服务器网络环境。可以使用以下命令查看服务状态:
docker compose ps
如果服务状态大多为 running 或 healthy,说明启动基本正常。
也可以查看启动日志:
docker compose logs -f
如果只想查看某个服务日志,例如 API:
docker compose logs -f api
查看 Web 服务日志:
docker compose logs -f web
九、访问 Dify 控制台
启动成功后,在浏览器中访问:
http://服务器IP
如果你修改过端口,则访问对应端口,例如:
http://服务器IP:8080
首次访问时,Dify 通常会引导你创建管理员账号。按照页面提示填写邮箱、用户名和密码即可。
创建完成后,就可以进入 Dify 控制台。此时你可以:
- 创建工作空间;
- 配置大模型供应商;
- 创建聊天应用;
- 上传知识库文档;
- 创建工作流;
- 发布 API 服务。
十、配置大模型供应商
进入 Dify 后台后,可以在设置中找到模型供应商配置入口。不同版本界面可能略有不同,一般路径类似:
设置 → 模型供应商
以 OpenAI 兼容接口为例,可以配置:
- API Key;
- Base URL;
- 模型名称;
- 上下文长度;
- 价格信息等。
如果你使用 DeepSeek,可以选择官方支持的 DeepSeek 供应商,或者使用 OpenAI Compatible 方式配置。
如果你使用本地模型,例如 Ollama,需要先在服务器或其他机器上运行 Ollama,然后在 Dify 中配置对应地址。需要注意的是,如果 Ollama 运行在宿主机上,而 Dify 运行在 Docker 容器中,访问地址不能简单写 localhost,因为容器中的 localhost 指的是容器自身。可以考虑使用宿主机内网 IP,或者配置 Docker 网络访问。
十一、创建第一个 AI 应用
完成模型配置后,可以创建一个简单的聊天应用进行测试。
1. 新建应用
在 Dify 控制台点击:
创建应用
选择:
聊天助手
填写应用名称,例如:
我的第一个 AI 助手
2. 编写 Prompt
例如:
你是一个专业、耐心、友好的中文 AI 助手。
请使用简洁清晰的中文回答用户问题。
如果用户的问题不明确,请先进行澄清。
3. 选择模型
选择刚刚配置好的模型,例如:
gpt-4o-mini
deepseek-chat
qwen-plus
4. 测试对话
在右侧调试窗口输入:
请介绍一下 Dify 的主要功能。
如果模型能够正常回复,说明 Dify 已经成功连接模型服务。
十二、创建知识库问答应用
Dify 的知识库功能非常适合企业内部资料问答、产品手册问答、客服知识库等场景。
1. 创建知识库
进入知识库页面,点击创建知识库,上传文档,例如:
- PDF;
- Word;
- Markdown;
- TXT;
- 网页内容等。
2. 设置分段策略
Dify 会将文档切分成多个文本片段,然后进行向量化存储。常见配置包括:
- 分段长度;
- 分段重叠;
- 索引方式;
- 检索模式。
初次使用可以选择默认配置。
3. 绑定知识库到应用
创建聊天应用时,可以开启知识库检索,并选择已经创建好的知识库。这样用户提问时,Dify 会先从知识库中检索相关内容,再结合大模型生成答案。
十三、常用 Docker 管理命令
部署完成后,日常维护中经常会用到以下命令。
1. 查看容器状态
docker compose ps
2. 查看全部日志
docker compose logs -f
3. 查看指定服务日志
docker compose logs -f api
docker compose logs -f web
docker compose logs -f worker
4. 停止服务
docker compose down
5. 启动服务
docker compose up -d
6. 重启服务
docker compose restart
7. 拉取最新镜像
docker compose pull
8. 查看 Docker 磁盘占用
docker system df
9. 清理无用镜像
docker image prune
注意:清理前请确认不会误删正在使用的数据。不要随意删除 volume,否则可能导致数据库数据丢失。
十四、如何升级 Dify?
Dify 更新比较频繁,升级前建议先备份数据。基本升级流程如下。
1. 进入项目目录
cd /opt/dify
2. 拉取最新代码
git pull
3. 进入 Docker 目录
cd docker
4. 备份环境配置
cp .env .env.backup.$(date +%F)
5. 对比新的环境变量
如果官方 .env.example 有变化,需要对比并补充新配置项:
diff .env.example .env
或者手动查看新增内容。
6. 拉取新镜像并重启
docker compose pull
docker compose down
docker compose up -d
7. 查看日志确认状态
docker compose logs -f
升级后访问控制台,确认应用、知识库、模型配置是否正常。
十五、数据备份建议
如果用于生产环境,一定要重视备份。Dify 的关键数据通常包括:
- PostgreSQL 数据库数据;
- 上传文件;
- 向量数据库数据;
.env配置文件;- Nginx 配置;
- 自定义证书;
- 其他 volumes 数据。
可以定期备份 Docker volume 或 Dify Docker 目录下的 volumes 文件夹。示例:
cd /opt/dify/docker
tar -czvf dify-volumes-backup-$(date +%F).tar.gz volumes
cp .env .env-backup-$(date +%F)
如果数据量较大,建议将备份文件同步到对象存储或另一台服务器。
十六、配置域名和 HTTPS
如果 Dify 需要对公网用户开放,建议绑定域名并配置 HTTPS。
1. 域名解析
在域名服务商后台添加 A 记录:
dify.example.com → 服务器公网 IP
等待 DNS 生效后,可以用以下命令测试:
ping dify.example.com
2. 配置反向代理
Dify Docker 中通常自带 Nginx 服务。如果你想使用宿主机 Nginx 或宝塔面板,也可以将外部请求反向代理到 Dify 暴露的端口。
常见 Nginx 反向代理配置示例:
server {
listen 80;
server_name dify.example.com;
location / {
proxy_pass http://127.0.0.1:80;
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;
}
}
如果使用 HTTPS,可以通过 Certbot 申请免费证书:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d dify.example.com
如果 Docker 内部 Nginx 已经占用 80 端口,宿主机 Nginx 可能无法同时监听 80 端口。此时可以修改 Dify 暴露端口,例如改为 8080,再由宿主机 Nginx 反向代理到 8080。
十七、常见问题排查
1. 访问网页打不开
可以依次检查:
docker compose ps
确认容器是否正常运行。
docker compose logs -f nginx
查看 Nginx 是否报错。
检查服务器安全组和防火墙是否开放 80 端口:
sudo ufw status
如果未开放,可以执行:
sudo ufw allow 80
sudo ufw allow 443
云服务器还需要在云厂商控制台开放端口。
2. 镜像拉取很慢或失败
可能是网络无法访问 Docker Hub 或 GitHub。可以尝试:
- 更换服务器网络;
- 配置 Docker 镜像加速;
- 多执行几次
docker compose pull; - 使用国内云服务器时选择合适的镜像源。
3. 容器启动后不断重启
查看日志:
docker compose logs -f
重点关注:
- 数据库连接失败;
- Redis 连接失败;
- 环境变量配置错误;
- 端口冲突;
- 磁盘空间不足;
- 内存不足。
查看磁盘空间:
df -h
查看内存:
free -h
4. 模型调用失败
如果应用无法正常调用模型,常见原因包括:
- API Key 填写错误;
- Base URL 配置错误;
- 模型名称不正确;
- 服务器无法访问模型服务商;
- 账户额度不足;
- 本地模型地址在容器内不可访问。
可以进入模型供应商配置页面重新测试连接。
5. 上传知识库失败
可能原因包括:
- 文件格式不支持;
- 文件过大;
- Worker 服务异常;
- 向量数据库异常;
- Embedding 模型未配置;
- 存储目录权限异常。
建议查看 Worker 日志:
docker compose logs -f worker
同时确认已配置可用的 Embedding 模型。
十八、生产环境部署建议
如果你计划将 Dify 用于正式业务,建议关注以下几点:
-
使用强密码和强密钥
数据库、Redis、后台账号、SECRET_KEY 都应使用强密码。 -
开启 HTTPS
避免账号密码和 API Key 明文传输。 -
限制后台访问范围
如果是企业内部使用,可以通过防火墙、VPN 或内网访问控制限制访问来源。 -
定期备份数据
至少备份数据库、上传文件、向量库和.env。 -
监控服务器资源
关注 CPU、内存、磁盘、网络和容器状态。 -
谨慎升级版本
生产环境升级前最好先在测试环境验证。 -
配置日志管理
避免日志无限增长导致磁盘占满。 -
合理选择模型供应商
根据成本、稳定性、响应速度和隐私要求选择模型。
十九、总结
通过 Docker 部署 Dify 是目前最简单、最高效的方式之一。整个过程主要包括:准备服务器、安装 Docker、拉取 Dify 项目、复制并修改 .env 配置文件、执行 docker compose up -d 启动服务、访问控制台并配置模型。相比源码部署,Docker 部署极大降低了环境配置难度,非常适合个人开发者、AI 应用初学者以及希望快速验证业务场景的团队。
部署完成后,你可以基于 Dify 快速创建聊天机器人、知识库问答系统、AI 工作流和智能体应用。如果只是学习和测试,按照默认配置即可快速运行;如果用于生产环境,则建议进一步配置域名、HTTPS、安全策略、数据备份和监控方案。
总的来说,Dify 将大模型应用开发从复杂的代码工程变成了可视化、可管理、可发布的平台能力,而 Docker 则让 Dify 的部署变得更加简单。只要按照本文步骤操作,你就可以在自己的服务器上一键搭建一个完整的 AI 应用开发平台。