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

Dify 生产环境 Docker 部署实战:从上线到备份运维一次讲清

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

Dify Docker部署教程|生产环境实测

Dify 是一款开源的 LLMOps 平台,适合用于快速搭建 AI 应用、Agent、知识库问答、工作流编排以及企业内部智能助手。相比从零开发一套大模型应用系统,Dify 提供了可视化配置、模型接入、Prompt 管理、数据集管理、API 发布、应用监控等完整能力,非常适合个人开发者、创业团队以及企业内部落地 AI 应用。

本文将以生产环境部署视角,介绍如何使用 Docker / Docker Compose 部署 Dify,并结合实际部署经验说明服务器配置、环境变量、域名 HTTPS、数据持久化、升级维护以及常见问题处理。文章内容偏实战,适合希望把 Dify 正式部署到服务器上的读者参考。


一、部署前准备

在开始部署之前,建议先准备一台 Linux 服务器。Dify 虽然可以在本地运行,但如果用于团队协作或生产环境,最好部署在云服务器或内网服务器上。

1. 推荐服务器配置

生产环境建议配置如下:

项目 推荐配置
CPU 4 核及以上
内存 8GB 起步,建议 16GB
磁盘 50GB 起步,建议 SSD
系统 Ubuntu 22.04 LTS / Debian 12 / CentOS Stream
网络 可访问外网,或已配置模型服务内网地址

如果只是测试体验,2 核 4GB 也能跑起来,但生产环境不建议这么低。Dify 本身会启动多个服务,包括 API、Worker、Web、PostgreSQL、Redis、向量数据库、Sandbox 等,内存不足时容易出现服务频繁重启、任务卡住、知识库导入失败等问题。

2. 域名准备

生产环境强烈建议准备一个域名,例如:

dify.example.com

然后将域名解析到服务器公网 IP。

如果是在企业内网部署,也可以使用内网 DNS,例如:

dify.company.local

虽然直接用 IP 访问也可以,但后续配置 HTTPS、第三方登录、API 回调、Webhook 等功能时,域名会方便很多。

3. 软件环境要求

需要提前安装:

  • Docker
  • Docker Compose
  • Git
  • Nginx,可选但生产环境推荐
  • Certbot,可选,用于申请 HTTPS 证书

二、安装 Docker 与 Docker Compose

以下以 Ubuntu 22.04 为例。

1. 更新系统依赖

sudo apt update
sudo apt upgrade -y

2. 安装基础工具

sudo apt install -y ca-certificates curl gnupg lsb-release git

3. 安装 Docker

curl -fsSL https://get.docker.com | bash

安装完成后查看版本:

docker version

将当前用户加入 docker 用户组,避免每次都使用 sudo:

sudo usermod -aG docker $USER

执行后建议重新登录服务器,或者执行:

newgrp docker

4. 安装 Docker Compose

现在 Docker 官方通常已经集成 Compose 插件,可以直接查看:

docker compose version

如果能够正常输出版本号,说明已经安装完成。


三、下载 Dify 项目

进入你希望存放项目的目录,例如 /opt

cd /opt
sudo git clone https://github.com/langgenius/dify.git
cd dify

Dify 的 Docker 部署文件位于 docker 目录下:

cd docker

查看目录:

ls

通常会看到类似文件:

docker-compose.yaml
.env.example
nginx
volumes

四、配置环境变量

Dify Docker 部署的核心配置文件是 .env。官方提供了示例文件,我们先复制一份:

cp .env.example .env

然后编辑:

vim .env

如果不熟悉 vim,也可以使用 nano:

nano .env

1. 必须关注的基础配置

以下是生产环境中比较重要的配置项。

SECRET_KEY

SECRET_KEY=

这个字段非常重要,用于加密敏感信息。生产环境一定要设置一个足够复杂的随机字符串。

可以使用下面命令生成:

openssl rand -base64 42

然后填入:

SECRET_KEY=your_generated_secret_key

注意:部署后不要随意修改 SECRET_KEY,否则可能导致已保存的模型密钥、凭证等无法解密。

CONSOLE_WEB_URL

CONSOLE_WEB_URL=https://dify.example.com

这是 Dify 控制台访问地址。生产环境建议使用 HTTPS 域名。

APP_WEB_URL

APP_WEB_URL=https://dify.example.com

这是应用访问地址。如果你计划将控制台和应用部署到同一个域名,可以保持一致。

API_URL

API_URL=https://dify.example.com

API 服务地址,前端会通过这个地址访问后端接口。

FILES_URL

FILES_URL=https://dify.example.com

文件访问地址,如果使用本地存储,一般也填写同一个域名。


五、配置数据库与 Redis

Dify 默认的 Docker Compose 会启动 PostgreSQL 和 Redis。对于中小规模生产环境,使用内置 PostgreSQL 和 Redis 是可以的,但一定要做好数据持久化和备份。

1. PostgreSQL 配置

.env 中通常会有类似配置:

DB_USERNAME=postgres
DB_PASSWORD=your_password
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify

建议修改默认密码:

DB_PASSWORD=change_this_to_a_strong_password

密码不要使用简单字符串,例如 123456passworddify 等。

2. Redis 配置

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

生产环境建议设置 Redis 密码:

REDIS_PASSWORD=your_redis_password

如果修改 Redis 密码,要确保 Compose 文件和相关服务能够正确读取该配置。一般官方 Compose 已经通过环境变量关联。


六、配置向量数据库

Dify 支持多种向量数据库,例如:

  • Weaviate
  • Qdrant
  • Milvus
  • PGVector
  • Elasticsearch
  • OceanBase Vector 等

默认 Docker 部署通常会包含一种默认向量数据库方案,具体取决于 Dify 版本。对于一般团队使用,默认配置即可满足大部分场景。

如果是生产环境,并且知识库数据较多,建议根据规模选择:

场景 推荐方案
小团队、轻量知识库 默认向量数据库或 PGVector
中等规模知识库 Qdrant / Weaviate
大规模检索、高并发 Milvus / Elasticsearch / 专用向量数据库服务

如果你希望简单稳定,建议先使用官方默认方案部署,等知识库规模变大后再迁移到独立向量数据库。


七、启动 Dify 服务

配置完成后,在 docker 目录下执行:

docker compose up -d

首次启动需要拉取镜像,时间取决于服务器网络环境。

查看容器状态:

docker compose ps

如果所有服务状态都是 runninghealthy,说明启动成功。

查看日志:

docker compose logs -f

也可以查看某个服务日志,例如:

docker compose logs -f api
docker compose logs -f worker
docker compose logs -f web

如果启动完成后,通过浏览器访问服务器 IP 或域名,即可进入 Dify 初始化页面。


八、初始化管理员账号

首次访问 Dify 时,系统会要求创建管理员账号。建议使用企业邮箱或专门的运维邮箱,例如:

admin@example.com

设置强密码后即可进入控制台。

进入控制台后,可以先完成以下检查:

  1. 是否可以正常登录;
  2. 页面是否有接口报错;
  3. 是否可以进入“设置”页面;
  4. 是否可以添加模型供应商;
  5. 是否可以创建应用;
  6. 是否可以测试一次对话。

如果这些步骤都正常,说明基础部署已经成功。


九、配置大模型供应商

Dify 本身不直接提供大模型推理能力,需要接入模型供应商。常见选择包括:

  • OpenAI
  • Azure OpenAI
  • Anthropic Claude
  • Google Gemini
  • DeepSeek
  • 阿里云通义千问
  • 火山引擎豆包
  • 百度千帆
  • 智谱 GLM
  • Ollama 本地模型
  • Xinference
  • OpenAI 兼容接口

在控制台中进入:

设置 → 模型供应商

根据实际情况配置 API Key 和模型名称。

如果生产环境部署在国内服务器,访问海外模型服务可能存在网络问题。建议优先考虑以下方案:

  1. 使用国内模型服务商;
  2. 使用 Azure OpenAI 区域资源;
  3. 部署本地模型服务,例如 Ollama、vLLM、Xinference;
  4. 使用企业内部统一的大模型网关。

十、配置 Nginx 反向代理

虽然 Dify Docker Compose 中通常自带 Nginx 服务,但生产环境中我更推荐在宿主机或统一网关层配置 Nginx,便于统一管理 HTTPS、访问日志、安全策略和反向代理。

1. 安装 Nginx

sudo apt install -y nginx

2. 新建站点配置

sudo vim /etc/nginx/sites-available/dify.conf

写入以下配置,假设 Dify 内部服务暴露在 127.0.0.1:80

server {
    listen 80;
    server_name dify.example.com;

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:80;
        proxy_http_version 1.1;

        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;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
    }
}

启用配置:

sudo ln -s /etc/nginx/sites-available/dify.conf /etc/nginx/sites-enabled/dify.conf
sudo nginx -t
sudo systemctl reload nginx

如果宿主机 80 端口已经被 Dify 自带 Nginx 容器占用,需要调整 Docker Compose 中的端口映射,或者让宿主机 Nginx 代理到 Dify 暴露的其他端口,例如 127.0.0.1:8080


十一、配置 HTTPS 证书

生产环境建议必须开启 HTTPS,否则浏览器安全策略、API 调用、文件上传下载、第三方集成都可能出现问题。

使用 Let’s Encrypt 免费证书:

sudo apt install -y certbot python3-certbot-nginx

申请证书:

sudo certbot --nginx -d dify.example.com

按照提示完成配置后,Certbot 会自动修改 Nginx 配置,并启用 HTTPS。

检查自动续期:

sudo certbot renew --dry-run

如果没有报错,说明证书续期正常。


十二、文件上传与存储配置

Dify 支持上传文档构建知识库,因此文件存储非常重要。默认情况下,Docker 部署通常使用本地存储,并通过 volume 持久化。

生产环境中需要关注两点:

  1. Docker volume 是否持久化;
  2. 是否需要迁移到对象存储。

如果团队只是内部使用,本地存储可以满足。但如果是多节点部署或文件量较大,建议使用对象存储,例如:

  • AWS S3
  • 阿里云 OSS
  • 腾讯云 COS
  • MinIO
  • 华为云 OBS

对象存储的优点是可扩展、易备份、适合分布式部署。缺点是配置稍复杂,并且需要额外关注权限与访问策略。


十三、数据持久化与备份

这是生产环境部署中最容易被忽略但最重要的部分。Dify 的关键数据通常包括:

  1. PostgreSQL 数据;
  2. Redis 数据;
  3. 向量数据库数据;
  4. 上传文件;
  5. .env 配置;
  6. Docker Compose 配置;
  7. Nginx 配置与 HTTPS 证书。

1. 查看 Docker volume

docker volume ls

也可以查看当前 Compose 项目相关 volume:

docker compose config

2. PostgreSQL 备份

如果使用 Docker 内置 PostgreSQL,可以通过以下命令备份:

docker compose exec db pg_dump -U postgres dify > dify_backup.sql

如果密码或用户名不同,请替换命令中的用户名和数据库名。

恢复时可以使用:

cat dify_backup.sql | docker compose exec -T db psql -U postgres dify

3. 定时备份建议

建议每天凌晨执行一次数据库备份,并保留最近 7 到 30 天。

可以创建脚本:

mkdir -p /opt/backups/dify
vim /opt/backups/dify/backup.sh

写入:

#!/bin/bash

DATE=$(date +%F_%H-%M-%S)
BACKUP_DIR=/opt/backups/dify
cd /opt/dify/docker || exit 1

docker compose exec -T db pg_dump -U postgres dify > $BACKUP_DIR/dify_$DATE.sql

find $BACKUP_DIR -name "dify_*.sql" -mtime +14 -delete

添加执行权限:

chmod +x /opt/backups/dify/backup.sh

添加 crontab:

crontab -e

写入:

0 3 * * * /opt/backups/dify/backup.sh

这样每天凌晨 3 点会自动备份一次。


十四、生产环境安全加固

Dify 部署完成后,建议做一些基础安全加固。

1. 不要开放不必要端口

服务器安全组建议只开放:

  • 80
  • 443
  • 22,最好限制 IP
  • 其他业务必要端口

PostgreSQL、Redis、向量数据库端口不应暴露到公网。

检查监听端口:

sudo ss -lntp

2. SSH 安全配置

建议:

  • 禁用 root 直接登录;
  • 使用密钥登录;
  • 修改默认 SSH 端口;
  • 使用云厂商安全组限制来源 IP。

编辑 SSH 配置:

sudo vim /etc/ssh/sshd_config

常见配置:

PermitRootLogin no
PasswordAuthentication no

重启 SSH:

sudo systemctl restart ssh

操作前一定要确认密钥登录可用,否则可能把自己锁在服务器外。

3. 管理员账号安全

Dify 管理员账号应使用强密码,并尽量避免多人共用同一个账号。如果企业内部使用,建议结合 SSO 或统一身份认证方案。

4. API Key 管理

Dify 中会保存模型供应商 API Key,这些密钥非常敏感。建议:

  • 使用独立项目 Key;
  • 设置额度限制;
  • 定期轮换;
  • 不要把高权限 Key 放入测试环境;
  • 不要在 Prompt 或日志中泄露密钥。

十五、升级 Dify

Dify 迭代速度较快,生产环境升级前一定要备份。

1. 备份数据

cd /opt/dify/docker
docker compose exec -T db pg_dump -U postgres dify > /opt/backups/dify_before_upgrade.sql

同时建议备份 .env

cp .env /opt/backups/dify_env_before_upgrade

2. 拉取最新代码

cd /opt/dify
git pull

进入 docker 目录:

cd docker

如果 .env.example 有变化,建议对比新旧配置:

diff .env.example .env

根据需要补充新配置项。

3. 拉取镜像并重启

docker compose pull
docker compose up -d

查看日志:

docker compose logs -f

升级后重点检查:

  1. 登录是否正常;
  2. 应用是否能打开;
  3. 模型调用是否正常;
  4. 知识库检索是否正常;
  5. Worker 是否有异常日志;
  6. 数据库迁移是否成功。

十六、常见问题排查

1. 容器启动失败

先查看状态:

docker compose ps

再查看日志:

docker compose logs -f

常见原因包括:

  • 端口被占用;
  • .env 配置错误;
  • 镜像拉取失败;
  • 数据库密码不一致;
  • 服务器内存不足。

查看端口占用:

sudo lsof -i:80
sudo lsof -i:443

2. 页面可以打开,但接口报错

通常是 URL 配置问题。重点检查:

CONSOLE_WEB_URL
APP_WEB_URL
API_URL
FILES_URL

如果你使用 HTTPS,但这些地址仍然写的是 HTTP,可能会出现跨域、接口请求失败、文件无法访问等问题。

3. 知识库文档上传失败

可能原因:

  • 文件过大;
  • Nginx client_max_body_size 太小;
  • Worker 异常;
  • 向量数据库异常;
  • Embedding 模型未配置或不可用。

建议先查看 Worker 日志:

docker compose logs -f worker

同时检查 Nginx 上传限制:

client_max_body_size 100M;

4. 模型调用超时

如果使用海外模型服务,可能是网络不稳定。可以:

  • 更换国内模型供应商;
  • 增加代理;
  • 使用云厂商同地域服务;
  • 部署本地模型;
  • 调整 Nginx 超时时间。

Nginx 中可设置:

proxy_read_timeout 300s;
proxy_send_timeout 300s;

5. 内存不足导致服务重启

查看系统内存:

free -h

查看容器资源:

docker stats

如果服务器只有 4GB 内存,导入大文档或同时运行多个服务时很容易 OOM。生产环境建议至少 8GB,最好 16GB。


十七、生产环境实测建议

根据实际部署经验,Dify 在生产环境中主要需要关注以下几点。

1. 不要只看“能跑起来”

很多教程到 docker compose up -d 就结束了,但生产环境远不止如此。真正上线前至少要验证:

  • 数据是否持久化;
  • 容器重启后是否正常;
  • 服务器重启后是否自动恢复;
  • HTTPS 是否正常;
  • 文件上传下载是否正常;
  • 知识库检索是否正常;
  • 模型调用是否稳定;
  • 数据库是否有备份;
  • 监控和日志是否可追踪。

2. 模型服务稳定性比 Dify 本身更关键

很多人以为 Dify 卡顿是平台问题,实际上大量问题来自模型 API:

  • 模型服务限流;
  • API Key 额度不足;
  • 网络访问不稳定;
  • Embedding 模型响应慢;
  • Rerank 服务不可用;
  • 上下文过长导致请求失败。

因此生产环境建议把模型调用链路单独测试清楚,尤其是知识库应用,需要同时依赖 Chat Model、Embedding Model,有时还会依赖 Rerank Model。

3. 知识库规模要循序渐进

不要一开始就上传大量文件。建议先用 10 到 50 篇文档测试:

  1. 文档解析是否正常;
  2. 分段效果是否合理;
  3. Embedding 是否成功;
  4. 检索结果是否准确;
  5. 回答是否引用正确;
  6. 响应速度是否可接受。

确认无问题后,再逐步扩大数据量。

4. 重要应用建议区分测试环境和生产环境

如果 Dify 已经承载企业内部业务,建议至少准备两个环境:

  • 测试环境:用于升级验证、新模型测试、Prompt 调试;
  • 生产环境:稳定运行,不随意修改配置。

尤其是 Dify 版本升级、模型切换、知识库重建,都建议先在测试环境验证。


十八、推荐部署架构

对于中小型团队,可以采用以下架构:

用户
 ↓
HTTPS / Nginx
 ↓
Dify Web/API
 ↓
PostgreSQL + Redis + 向量数据库
 ↓
模型供应商 / 本地模型服务

如果团队规模较大,可以进一步拆分:

用户
 ↓
负载均衡
 ↓
Nginx / Ingress
 ↓
Dify API 多实例 + Worker 多实例
 ↓
独立 PostgreSQL
 ↓
独立 Redis
 ↓
独立向量数据库
 ↓
对象存储
 ↓
企业模型网关

对于大多数公司内部使用场景,第一种架构已经足够。只有当并发量明显上升、知识库数据非常大、模型调用链路复杂时,才需要考虑多节点与高可用架构。


十九、上线检查清单

正式上线前,可以按照下面清单检查:

  • [ ] 域名解析正确;
  • [ ] HTTPS 证书有效;
  • [ ] 管理员账号已创建;
  • [ ] 默认密码已修改;
  • [ ] SECRET_KEY 已设置;
  • [ ] PostgreSQL 密码已修改;
  • [ ] Redis 密码已配置;
  • [ ] 数据 volume 已确认;
  • [ ] 数据库备份脚本已配置;
  • [ ] 服务器安全组已限制;
  • [ ] 不必要端口未暴露;
  • [ ] 模型供应商已配置;
  • [ ] Embedding 模型可用;
  • [ ] 知识库上传测试通过;
  • [ ] 应用 API 调用测试通过;
  • [ ] 容器重启测试通过;
  • [ ] 服务器重启后服务可恢复;
  • [ ] 日志查看方式已确认;
  • [ ] 升级回滚方案已准备。

二十、总结

使用 Docker 部署 Dify 并不复杂,核心步骤可以概括为:

  1. 准备服务器和域名;
  2. 安装 Docker 与 Docker Compose;
  3. 下载 Dify 源码;
  4. 配置 .env
  5. 启动 Docker Compose;
  6. 初始化管理员账号;
  7. 配置模型供应商;
  8. 配置 Nginx 和 HTTPS;
  9. 做好数据持久化和备份;
  10. 按生产环境标准进行安全加固和运维监控。

从实测经验来看,Dify 非常适合快速构建企业级 AI 应用原型,并且具备一定生产可用性。但如果要长期稳定运行,不能只停留在“能访问页面”的层面,而要重点关注备份、安全、模型稳定性、知识库质量、升级策略和资源监控

对于个人开发者,Docker Compose 默认部署已经足够;对于企业生产环境,建议使用独立数据库、独立 Redis、对象存储和统一模型网关,并建立测试环境和备份机制。只要这些基础设施完善,Dify 可以成为企业内部 AI 应用落地的一套高效平台。

目录结构
全文