企业内网部署 Dify:从 Docker 安装到生产环境上线指南
Dify Docker部署教程|适合企业用户
在企业级 AI 应用落地过程中,越来越多团队希望通过可视化、低代码的方式快速构建大模型应用,例如智能客服、知识库问答、内部办公助手、数据分析助手、工单自动分流系统等。Dify 作为一款开源的大模型应用开发平台,提供了 Prompt 编排、工作流、知识库、Agent、模型接入、API 发布、权限管理等能力,适合企业在私有化环境中进行部署和二次开发。
对于企业用户而言,采用 Docker 方式部署 Dify 是一种相对高效、稳定、可维护的方案。Docker 部署可以降低环境配置复杂度,便于版本升级、迁移和回滚,也适合在测试环境、预生产环境以及生产环境中快速搭建服务。
本文将以企业实际部署场景为导向,详细介绍如何通过 Docker 部署 Dify,并对服务器准备、环境配置、服务启动、访问验证、模型配置、数据持久化、安全建议、常见问题等内容进行说明。
一、Dify 简介
Dify 是一个开源的 LLMOps 平台,可以帮助企业快速构建、发布和运营基于大语言模型的应用。它的核心能力包括:
- 可视化应用编排:支持聊天助手、文本生成应用、Agent、工作流等应用类型;
- 多模型接入:支持 OpenAI、Azure OpenAI、Anthropic、通义千问、智谱、DeepSeek、Ollama、本地模型等;
- 知识库能力:支持文档上传、向量化、语义检索、RAG 问答;
- 工作流自动化:支持条件判断、变量传递、HTTP 请求、代码节点等;
- API 发布:应用可通过 API 方式集成到企业系统中;
- 团队协作:支持多用户、多空间、权限管理;
- 私有化部署:支持企业在自有服务器或内网环境中部署。
对于企业用户来说,Dify 的价值不只是“搭建一个聊天机器人”,更重要的是它能成为企业内部 AI 应用开发、管理和交付的平台。
二、为什么企业用户适合使用 Docker 部署 Dify?
Dify 支持多种部署方式,其中 Docker Compose 是最常见、最推荐的方式之一。对于企业来说,Docker 部署具备以下优势:
1. 环境隔离,减少依赖冲突
Dify 涉及 Web 服务、API 服务、数据库、Redis、向量数据库、任务队列等多个组件。如果手动安装,每个组件都需要处理版本兼容问题。使用 Docker 后,各服务运行在独立容器中,避免与宿主机环境产生冲突。
2. 部署速度快
通过官方提供的 Docker Compose 文件,可以一次性拉起多个服务,减少人工配置成本。对于测试环境或演示环境,通常十几分钟即可完成部署。
3. 易于迁移和扩展
Docker 部署天然适合迁移。企业可以先在测试服务器部署,验证无误后再迁移到生产服务器。后续如果要扩容,也可以基于容器化架构进一步接入 Kubernetes。
4. 便于版本升级和回滚
企业环境中,升级必须谨慎。Docker 部署可以通过镜像版本控制实现灰度升级、快速回滚,相比传统部署更容易管理。
5. 适合私有化和内网部署
很多企业对数据安全、合规和隐私有严格要求,不能将业务数据发送到外部平台。Dify 支持私有化部署,结合企业内网模型服务或本地大模型,可以构建更加安全的 AI 应用环境。
三、部署前准备
在正式部署之前,需要准备服务器、系统环境、域名、防火墙以及必要的软件工具。
四、服务器配置建议
Dify 本身对服务器要求不算特别高,但如果企业还要部署向量数据库、知识库服务,甚至本地大模型,则需要根据使用规模进行规划。
1. 测试环境配置
适合个人测试、部门试用、小规模验证:
| 配置项 | 建议 |
|---|---|
| CPU | 2 核及以上 |
| 内存 | 4GB 及以上,推荐 8GB |
| 磁盘 | 30GB 及以上 |
| 系统 | Ubuntu 20.04 / 22.04、Debian、CentOS Stream 等 |
| 网络 | 可访问 Docker 镜像仓库和模型服务 |
2. 企业生产环境配置
适合企业内部正式使用:
| 配置项 | 建议 |
|---|---|
| CPU | 4 核及以上,推荐 8 核 |
| 内存 | 16GB 及以上 |
| 磁盘 | 100GB 及以上,推荐 SSD |
| 系统 | Ubuntu Server 22.04 LTS |
| 数据库 | 建议单独部署 PostgreSQL |
| Redis | 建议单独部署或使用高可用 Redis |
| 对象存储 | 可接入 MinIO、S3 或企业内部存储 |
| 反向代理 | Nginx / Traefik |
| HTTPS | 推荐配置 SSL 证书 |
如果企业计划使用本地大模型,例如通过 Ollama、vLLM、Xinference 或 GPU 推理服务接入 Dify,则需要额外准备 GPU 服务器。Dify 本身不负责模型训练和推理,主要负责应用编排和调用模型服务。
五、安装 Docker 和 Docker Compose
以下以 Ubuntu Server 22.04 为例。
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
4. 设置 Docker 开机自启
sudo systemctl enable docker
sudo systemctl start docker
5. 安装 Docker Compose
目前 Docker Compose 通常以插件形式安装。执行:
sudo apt install -y docker-compose-plugin
验证安装:
docker compose version
如果能正常显示版本号,说明 Docker Compose 已安装完成。
6. 将当前用户加入 Docker 用户组
为了避免每次执行 Docker 命令都使用 sudo,可以执行:
sudo usermod -aG docker $USER
然后重新登录服务器,使用户组配置生效。
六、获取 Dify Docker 部署文件
Dify 官方提供了 Docker 部署目录。可以从 GitHub 克隆项目:
git clone https://github.com/langgenius/dify.git
进入 Docker 部署目录:
cd dify/docker
在该目录下通常可以看到以下文件:
ls
常见文件包括:
docker-compose.yaml
.env.example
nginx/
volumes/
其中:
docker-compose.yaml:定义 Dify 各个服务;.env.example:环境变量示例文件;volumes/:部分服务的数据挂载目录;nginx/:Nginx 相关配置。
七、配置环境变量
在启动服务之前,需要先复制环境变量配置文件:
cp .env.example .env
然后编辑 .env 文件:
vim .env
如果服务器未安装 vim,也可以使用 nano:
nano .env
企业部署时,建议重点关注以下配置项。
八、关键环境变量说明
不同版本的 Dify 环境变量可能略有差异,实际请以当前版本 .env.example 为准。以下是企业部署中常见的关键配置项。
1. 控制台访问地址
CONSOLE_WEB_URL=
如果使用 IP 访问,可以配置为:
CONSOLE_WEB_URL=http://服务器IP
如果使用域名访问,例如:
CONSOLE_WEB_URL=https://dify.example.com
2. API 服务地址
SERVICE_API_URL=
通常与 Dify 后端 API 访问地址有关。如果使用域名,可以配置为:
SERVICE_API_URL=https://dify.example.com
3. 应用访问地址
APP_WEB_URL=
用于配置用户访问应用的地址。如果企业内部用户通过统一域名访问,也可以设置为:
APP_WEB_URL=https://dify.example.com
4. 密钥配置
Dify 中会涉及加密密钥、会话密钥等配置。生产环境中不建议使用默认值,应生成足够复杂的随机字符串。
例如可以使用以下命令生成随机密钥:
openssl rand -base64 42
然后将生成的内容填入对应的密钥配置中。
5. 数据库配置
默认 Docker Compose 会启动 PostgreSQL 容器。如果企业生产环境要求更高,建议使用独立 PostgreSQL 数据库,并修改 .env 中的数据库连接信息。
常见配置包括:
DB_USERNAME=postgres
DB_PASSWORD=your_password
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify
如果使用外部 PostgreSQL,例如:
DB_HOST=192.168.10.20
DB_PORT=5432
DB_USERNAME=dify
DB_PASSWORD=StrongPassword
DB_DATABASE=dify
6. Redis 配置
Dify 使用 Redis 处理缓存和任务队列相关能力。默认可以使用 Compose 中的 Redis 容器,生产环境也可以接入企业已有 Redis。
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
7. 向量数据库配置
Dify 支持多种向量数据库,例如 Weaviate、Qdrant、Milvus、Chroma、PGVector 等。企业可以根据使用规模和技术栈选择。
如果只是中小规模知识库,使用默认配置即可。如果数据量较大、检索要求较高,建议单独部署向量数据库。
九、启动 Dify 服务
配置完成后,在 dify/docker 目录下执行:
docker compose up -d
该命令会在后台启动 Dify 所需的所有容器。第一次启动时需要拉取镜像,耗时取决于服务器网络速度。
查看容器运行状态:
docker compose ps
如果所有服务状态都为 running 或 healthy,说明启动基本正常。
也可以查看日志:
docker compose logs -f
如果只想查看某个服务日志,例如 API 服务:
docker compose logs -f api
十、访问 Dify 控制台
如果使用默认配置,通常可以通过以下地址访问:
http://服务器IP
或者:
http://服务器IP:端口
具体端口取决于 Docker Compose 和 Nginx 配置。若企业配置了域名和反向代理,则访问:
https://dify.example.com
首次访问 Dify 控制台时,系统会引导创建管理员账号。建议企业使用专门的管理员邮箱,并妥善保管账号。
十一、配置反向代理和 HTTPS
企业生产环境中,不建议直接使用裸 IP 和 HTTP 访问。推荐通过 Nginx 或网关统一代理,并配置 HTTPS。
以下是一个简化版 Nginx 反向代理示例:
server {
listen 80;
server_name dify.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name dify.example.com;
ssl_certificate /etc/nginx/ssl/dify.example.com.crt;
ssl_certificate_key /etc/nginx/ssl/dify.example.com.key;
client_max_body_size 100M;
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;
}
}
如果服务器上 Dify 的 Nginx 容器已经占用了 80 端口,外部反向代理需要注意端口冲突。可以将 Dify 映射到宿主机其他端口,例如 8080,再由外部 Nginx 转发到该端口。
企业还可以使用以下方式配置证书:
- 使用 Let’s Encrypt 免费证书;
- 使用企业内部 CA 证书;
- 使用云厂商 SSL 证书;
- 使用网关或负载均衡器统一终止 HTTPS。
十二、配置模型供应商
Dify 部署完成后,还需要配置大模型供应商,否则无法正常创建 AI 应用。
进入 Dify 控制台后,通常可以在以下位置配置模型:
设置 → 模型供应商
常见模型接入方式包括:
1. 接入 OpenAI
填写 OpenAI API Key,并选择对应模型,如:
- GPT-4o
- GPT-4o-mini
- GPT-4.1
- text-embedding-3-small
- text-embedding-3-large
适合对外网访问没有限制,并且可以接受数据传输到 OpenAI 的企业。
2. 接入 Azure OpenAI
对于已经使用微软云的企业,可以接入 Azure OpenAI。需要填写:
- API Key;
- Endpoint;
- API Version;
- Deployment Name。
Azure OpenAI 在企业合规、权限和网络治理方面相对更成熟。
3. 接入国产大模型
Dify 支持多种国产模型服务,例如:
- 通义千问;
- 智谱 AI;
- 百度千帆;
- 腾讯混元;
- DeepSeek;
- Moonshot;
- 零一万物等。
企业可根据采购情况和业务需求选择。
4. 接入本地模型
如果企业对数据安全要求较高,可以使用本地模型服务。常见方案包括:
- Ollama;
- vLLM;
- Xinference;
- LocalAI;
- LM Studio;
- 自研推理服务。
例如企业在内网 GPU 服务器上部署了 Ollama,可以在 Dify 中配置对应服务地址,使 Dify 调用本地模型完成推理。
十三、配置知识库与向量模型
知识库是 Dify 在企业场景中非常常用的能力。企业可以将内部制度、产品文档、技术手册、合同模板、FAQ、操作规范等资料上传到知识库中,结合大模型实现问答。
1. 配置 Embedding 模型
知识库检索需要使用 Embedding 模型将文本转换为向量。可以选择:
- OpenAI Embedding;
- Azure OpenAI Embedding;
- 通义千问 Embedding;
- 智谱 Embedding;
- BGE 系列本地 Embedding;
- 其他兼容模型。
企业应根据语言类型、检索质量、成本和安全要求选择 Embedding 模型。
2. 创建知识库
在 Dify 控制台中进入知识库模块,创建新的知识库,然后上传文档。常见支持的文档类型包括:
- PDF;
- Word;
- Excel;
- TXT;
- Markdown;
- 网页内容等。
3. 文档切分策略
文档上传后,Dify 会进行文本切分和向量化。企业在使用时需要注意:
- 切分过短:上下文信息不足,回答可能不完整;
- 切分过长:检索准确率下降,模型上下文消耗增加;
- 建议根据文档结构选择合适的分段策略;
- 对制度类、FAQ 类文档,可采用较小分段;
- 对技术手册类文档,可适当增大分段长度。
4. 检索效果优化
如果知识库回答不准确,可以从以下方面优化:
- 提升文档质量,去除无关内容;
- 使用更好的 Embedding 模型;
- 调整 Top-K 参数;
- 开启重排序模型;
- 优化 Prompt;
- 将知识库按业务分类拆分;
- 使用工作流进行多阶段检索和回答。
十四、创建第一个企业 AI 应用
完成模型和知识库配置后,可以创建一个简单的企业内部问答助手。
1. 创建聊天助手
进入 Dify 控制台:
工作室 → 创建应用 → 聊天助手
填写应用名称,例如:
企业制度问答助手
2. 编写系统提示词
可以设置如下提示词:
你是企业内部制度问答助手。
请基于知识库内容回答员工问题。
如果知识库中没有相关信息,请明确说明“当前知识库中未找到相关依据”,不要编造答案。
回答应简洁、准确,并尽量引用制度名称或条款。
3. 绑定知识库
在应用配置中添加已创建的企业制度知识库。
4. 测试应用
输入问题,例如:
员工年假如何计算?
观察模型是否能够从知识库中检索到相关内容,并给出准确回答。
5. 发布应用
测试通过后,可以发布应用。Dify 支持:
- Web App 链接;
- API 调用;
- 嵌入第三方系统;
- 与企业微信、钉钉、飞书等平台集成。
企业可以根据实际需求将其接入内部门户、OA、客服系统或知识管理平台。
十五、数据持久化说明
Docker 部署最容易被忽视的问题之一是数据持久化。企业部署时必须确认以下数据不会因为容器重建而丢失:
- PostgreSQL 数据;
- Redis 数据;
- 向量数据库数据;
- 上传文件;
- 配置文件;
- 日志文件;
- Nginx 配置;
- 插件或扩展相关数据。
Dify Docker Compose 默认会通过 volume 或目录挂载保存数据。企业应定期检查挂载路径,并将关键数据纳入备份策略。
查看 Docker volume:
docker volume ls
查看容器挂载信息:
docker inspect 容器名称
建议企业不要随意执行以下命令:
docker compose down -v
因为 -v 参数会删除相关 volume,可能导致数据库、知识库和上传文件数据丢失。生产环境如果需要停止服务,建议使用:
docker compose down
或:
docker compose stop
十六、备份与恢复建议
企业环境中,Dify 一旦承载业务应用,就必须建立备份机制。
1. PostgreSQL 备份
可以使用 pg_dump 备份数据库:
docker exec -t dify-db-1 pg_dump -U postgres dify > dify_backup.sql
恢复时:
cat dify_backup.sql | docker exec -i dify-db-1 psql -U postgres dify
实际容器名称请通过以下命令确认:
docker compose ps
2. 文件数据备份
可以备份 Docker 挂载目录:
tar -czvf dify_volumes_backup.tar.gz ./volumes
3. 定期备份策略
企业建议采用以下策略:
- 每日自动备份数据库;
- 每周备份上传文件和向量数据;
- 备份文件保留至少 30 天;
- 关键业务系统采用异地备份;
- 定期进行恢复演练;
- 升级前必须完整备份。
十七、升级 Dify
Dify 版本更新较快,升级前需要谨慎处理。建议流程如下:
1. 查看当前版本
git branch
git log -1
或查看当前镜像版本:
docker images
2. 备份数据
升级前务必备份数据库、上传文件和配置文件。
3. 拉取最新代码
cd dify
git pull
进入 Docker 目录:
cd docker
4. 对比环境变量
新版本可能新增环境变量。建议将新的 .env.example 与当前 .env 对比,补充新增配置。
可以使用:
diff .env.example .env
5. 拉取新镜像并重启
docker compose pull
docker compose up -d
6. 观察日志
docker compose logs -f
确认服务正常后,再开放给用户使用。
生产环境不建议在业务高峰期升级,最好选择维护窗口操作。
十八、安全加固建议
企业部署 Dify 时,安全非常重要。建议从以下几个方面加固。
1. 使用 HTTPS
生产环境必须启用 HTTPS,避免账号密码、API Key、业务数据明文传输。
2. 限制访问范围
如果 Dify 仅供内部使用,可以通过以下方式限制访问:
- 内网部署;
- VPN 访问;
- 防火墙白名单;
- 零信任网关;
- Nginx IP 限制;
- 企业统一身份认证。
3. 修改默认密钥
.env 中涉及密钥的配置不能使用默认值,应改为随机强密码。
4. 保护模型 API Key
模型供应商 API Key 属于敏感信息,应限制管理员权限,避免泄露。建议:
- 使用最小权限 Key;
- 定期轮换 Key;
- 设置调用额度;
- 开启异常消费告警;
- 不在日志中打印 Key。
5. 控制用户权限
企业内部使用时,不应所有用户都拥有管理员权限。建议按角色分配:
- 平台管理员;
- 应用开发者;
- 知识库管理员;
- 普通使用者;
- 审计人员。
6. 日志与审计
企业应保留关键操作日志,包括:
- 用户登录;
- 应用创建和修改;
- 知识库上传;
- API 调用;
- 模型调用异常;
- 权限变更。
如有合规要求,可以接入企业统一日志平台。
十九、常见问题与排查方法
问题一:Docker 镜像拉取很慢
可能原因是网络连接 Docker Hub 或 GitHub 较慢。解决方式:
- 配置 Docker 镜像加速;
- 使用企业内部镜像仓库;
- 在可联网环境提前拉取镜像后导入;
- 检查服务器 DNS 配置。
问题二:服务启动后无法访问页面
排查步骤:
docker compose ps
确认容器是否正常运行。
查看端口监听:
sudo netstat -tulnp | grep 80
或:
sudo ss -tulnp | grep 80
查看 Nginx 日志:
docker compose logs -f nginx
同时检查云服务器安全组、防火墙、本机 iptables 是否放行端口。
问题三:API 服务报数据库连接失败
检查 .env 中数据库配置是否正确:
- DB_HOST;
- DB_PORT;
- DB_USERNAME;
- DB_PASSWORD;
- DB_DATABASE。
如果使用外部数据库,需要确认数据库允许 Dify 服务器访问,并检查网络连通性:
telnet 数据库IP 5432
或:
nc -zv 数据库IP 5432
问题四:知识库无法完成向量化
可能原因包括:
- Embedding 模型未配置;
- API Key 无效;
- 模型服务不可访问;
- 文档过大;
- 向量数据库异常;
- worker 服务未正常运行。
可以查看 worker 日志:
docker compose logs -f worker
问题五:模型调用失败
检查以下内容:
- 模型供应商配置是否正确;
- API Key 是否有效;
- 服务器是否能访问模型供应商;
- 是否配置了代理;
- 模型名称是否填写正确;
- 额度是否用尽;
- 请求是否被企业防火墙拦截。
二十、企业生产部署最佳实践
为了让 Dify 更稳定地服务企业用户,建议参考以下最佳实践。
1. 区分测试环境和生产环境
不要直接在生产环境试验新版本、新模型和复杂工作流。建议至少准备两个环境:
- 测试环境:用于验证功能、升级和新应用;
- 生产环境:用于正式业务访问。
2. 数据库独立部署
生产环境中,PostgreSQL 最好不要长期运行在单机 Docker 容器中。可以使用:
- 云数据库 PostgreSQL;
- 企业自建 PostgreSQL 集群;
- 主从复制;
- 定期备份;
- 高可用方案。
3. 统一域名和证书
企业内部应为 Dify 分配正式域名,例如:
https://ai.example.com
并接入统一证书管理,避免用户通过 IP 访问。
4. 设置资源监控
建议监控以下指标:
- CPU 使用率;
- 内存使用率;
- 磁盘空间;
- 容器状态;
- 数据库连接数;
- Redis 状态;
- API 响应时间;
- 模型调用量;
- Token 消耗量。
可使用 Prometheus、Grafana、Zabbix、夜莺、云监控等工具。
5. 控制成本
如果使用商业模型 API,企业应关注 Token 成本。建议:
- 设置模型调用预算;
- 为不同应用选择不同模型;
- 普通问答使用轻量模型;
- 复杂推理使用高性能模型;
- 优化 Prompt 长度;
- 控制知识库召回数量;
- 定期分析调用日志。
6. 建立应用审核机制
Dify 让业务人员也能快速创建 AI 应用,但企业仍需建立审核机制,避免出现以下问题:
- Prompt 泄露敏感信息;
- 知识库上传涉密文档;
- 应用回答不符合合规要求;
- API 被滥用;
- 未经审批接入外部模型。
二十一、适合企业落地的典型场景
Dify 部署完成后,企业可以围绕以下场景进行应用建设。
1. 企业知识库问答
将制度、流程、产品手册、IT 支持文档导入知识库,员工可以直接提问获取答案,减少重复咨询。
2. 智能客服助手
将 FAQ、商品说明、售后政策、工单记录接入 Dify,构建客服辅助系统,提高客服响应效率。
3. 内部办公助手
用于邮件草拟、会议纪要生成、周报总结、文档润色、公告生成等办公场景。
4. 技术支持助手
将技术文档、接口文档、故障处理手册导入知识库,帮助研发、运维和售后快速定位问题。
5. 工作流自动化
结合 Dify 工作流能力,可以实现:
- HTTP 接口调用;
- 数据解析;
- 多模型协作;
- 条件判断;
- 内容审核;
- 自动生成报告;
- 工单自动分类。
6. 数据分析辅助
通过调用企业内部数据接口,结合大模型生成分析说明、经营报告和趋势解读。
二十二、总结
通过 Docker 部署 Dify,是企业快速搭建私有化 AI 应用平台的高效方式。相比传统手工部署,Docker Compose 能够简化环境配置、降低部署门槛,并提升维护效率。对于企业用户而言,完成部署只是第一步,更重要的是围绕安全、权限、备份、监控、模型管理和业务流程建立完整的运营体系。
在实际生产环境中,建议企业重点关注以下几点:
- 使用独立域名和 HTTPS;
- 修改默认密钥并保护 API Key;
- 建立数据库和文件备份机制;
- 合理选择模型和向量数据库;
- 将测试环境与生产环境分离;
- 对知识库内容进行分类和治理;
- 建立 AI 应用发布和审核流程;
- 持续监控模型调用成本和系统性能。
Dify 的优势在于将大模型应用开发流程产品化、可视化,让企业可以更快地把 AI 能力集成到业务系统中。对于希望建设内部 AI 平台、提升知识管理效率、降低应用开发成本的企业来说,Dify 是一个值得深入探索和实践的开源方案。