上一篇 下一篇 分享链接 返回 返回顶部

从零搭建 Dify:Docker 一键部署完整指南

发布人:慈云数据-客服中心 发布时间:20小时前 阅读量:0

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 的优点主要有:

  1. 部署简单
    不需要分别安装数据库、Redis、后端环境、前端环境,只需要 Docker 和 Docker Compose。

  2. 环境隔离
    所有服务都运行在容器中,不容易污染宿主机环境。

  3. 升级方便
    后续更新 Dify 版本时,只需要拉取最新代码和镜像,然后重新启动服务。

  4. 便于迁移
    如果需要更换服务器,可以备份配置文件和数据卷,迁移相对方便。

  5. 适合快速测试和生产试运行
    对个人开发者、小团队来说,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

如果服务状态大多为 runninghealthy,说明启动基本正常。

也可以查看启动日志:

docker compose logs -f

如果只想查看某个服务日志,例如 API:

docker compose logs -f api

查看 Web 服务日志:

docker compose logs -f web

九、访问 Dify 控制台

启动成功后,在浏览器中访问:

http://服务器IP

如果你修改过端口,则访问对应端口,例如:

http://服务器IP:8080

首次访问时,Dify 通常会引导你创建管理员账号。按照页面提示填写邮箱、用户名和密码即可。

创建完成后,就可以进入 Dify 控制台。此时你可以:

  1. 创建工作空间;
  2. 配置大模型供应商;
  3. 创建聊天应用;
  4. 上传知识库文档;
  5. 创建工作流;
  6. 发布 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 用于正式业务,建议关注以下几点:

  1. 使用强密码和强密钥
    数据库、Redis、后台账号、SECRET_KEY 都应使用强密码。

  2. 开启 HTTPS
    避免账号密码和 API Key 明文传输。

  3. 限制后台访问范围
    如果是企业内部使用,可以通过防火墙、VPN 或内网访问控制限制访问来源。

  4. 定期备份数据
    至少备份数据库、上传文件、向量库和 .env

  5. 监控服务器资源
    关注 CPU、内存、磁盘、网络和容器状态。

  6. 谨慎升级版本
    生产环境升级前最好先在测试环境验证。

  7. 配置日志管理
    避免日志无限增长导致磁盘占满。

  8. 合理选择模型供应商
    根据成本、稳定性、响应速度和隐私要求选择模型。


十九、总结

通过 Docker 部署 Dify 是目前最简单、最高效的方式之一。整个过程主要包括:准备服务器、安装 Docker、拉取 Dify 项目、复制并修改 .env 配置文件、执行 docker compose up -d 启动服务、访问控制台并配置模型。相比源码部署,Docker 部署极大降低了环境配置难度,非常适合个人开发者、AI 应用初学者以及希望快速验证业务场景的团队。

部署完成后,你可以基于 Dify 快速创建聊天机器人、知识库问答系统、AI 工作流和智能体应用。如果只是学习和测试,按照默认配置即可快速运行;如果用于生产环境,则建议进一步配置域名、HTTPS、安全策略、数据备份和监控方案。

总的来说,Dify 将大模型应用开发从复杂的代码工程变成了可视化、可管理、可发布的平台能力,而 Docker 则让 Dify 的部署变得更加简单。只要按照本文步骤操作,你就可以在自己的服务器上一键搭建一个完整的 AI 应用开发平台。

目录结构
全文