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

Dify Docker 部署实战:从服务器准备到上线运行,一套命令搞定

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

Dify Docker部署教程|附完整命令

Dify 是一个开源的 LLM 应用开发平台,支持可视化编排、Agent、工作流、RAG 知识库、模型接入、API 发布等能力。对于个人开发者、企业内部团队或者希望快速搭建 AI 应用平台的用户来说,使用 Docker 部署 Dify 是目前最推荐、最省心的方式之一。

本文将以 Docker Compose 的方式,完整介绍 Dify 的部署流程,包括服务器准备、环境安装、拉取源码、配置环境变量、启动服务、访问控制台、常见问题处理、升级与维护等内容,并附上完整命令,适合新手直接照着操作。


一、部署前准备

在正式部署 Dify 之前,建议准备一台 Linux 服务器。常见的 Ubuntu、Debian、CentOS、Rocky Linux、Alibaba Cloud Linux 等系统都可以使用。

1. 推荐服务器配置

Dify 本身包含多个服务组件,例如:

  • Web 前端
  • API 服务
  • Worker 异步任务
  • PostgreSQL 数据库
  • Redis 缓存
  • Weaviate / Qdrant / Milvus 等向量数据库
  • Nginx 网关
  • Sandbox 代码执行环境
  • SSRF Proxy 安全代理

如果只是个人测试,配置可以低一些;如果用于生产环境,建议配置更高。

使用场景 CPU 内存 磁盘
个人体验 2 核 4GB 40GB
小团队测试 4 核 8GB 80GB
生产环境 8 核以上 16GB 以上 200GB 以上

如果后续需要使用本地大模型,还需要额外考虑 GPU、显存和模型运行环境。但 Dify 本身部署并不强制要求 GPU。


二、安装 Docker 和 Docker Compose

下面以 Ubuntu / Debian 系统为例。如果你使用的是 CentOS 或 Rocky Linux,命令会略有差异,但整体思路一致。

1. 更新系统软件包

sudo apt update
sudo apt upgrade -y

2. 安装基础依赖

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

3. 添加 Docker 官方 GPG 密钥

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

4. 添加 Docker 软件源

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

5. 安装 Docker

sudo apt update

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

6. 启动 Docker 并设置开机自启

sudo systemctl enable docker
sudo systemctl start docker

7. 检查 Docker 版本

docker --version
docker compose version

如果能正常显示版本号,说明 Docker 和 Docker Compose 已安装成功。


三、拉取 Dify 项目代码

Dify 官方项目托管在 GitHub 上,Docker 部署相关文件位于项目中的 docker 目录。

1. 克隆 Dify 仓库

git clone https://github.com/langgenius/dify.git

进入项目目录:

cd dify

2. 进入 Docker 部署目录

cd docker

查看目录文件:

ls

通常可以看到类似以下文件:

docker-compose.yaml
.env.example
middleware.env.example

其中:

  • docker-compose.yaml:Docker Compose 编排文件
  • .env.example:环境变量示例文件
  • middleware.env.example:中间件环境变量示例文件

四、配置环境变量

Dify 在启动前需要准备环境变量文件。官方已经提供了示例文件,我们只需要复制一份即可。

1. 复制环境变量文件

cp .env.example .env

部分版本可能还需要复制中间件配置:

cp middleware.env.example middleware.env

如果文件不存在,则忽略即可。

2. 编辑 .env 文件

nano .env

或者使用 vim:

vim .env

对于首次部署,通常不需要大幅修改,默认配置即可启动。但如果用于生产环境,建议重点检查以下配置。


五、常用环境变量说明

不同 Dify 版本的 .env 内容可能略有不同,下面列出一些常见配置项,方便理解和调整。

1. 对外访问地址

如果你有域名,例如:

https://dify.example.com

建议在 .env 中配置相关访问地址。常见字段可能包括:

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

如果你通过域名和 HTTPS 反向代理访问,则可以配置为:

CONSOLE_WEB_URL=https://dify.example.com
APP_WEB_URL=https://dify.example.com
SERVICE_API_URL=https://dify.example.com

2. Nginx 对外端口

Dify 默认通过 Nginx 暴露 Web 服务,通常端口为 80

如果服务器的 80 端口已经被占用,可以在 .env 中查找端口相关配置,例如:

EXPOSE_NGINX_PORT=80
EXPOSE_NGINX_SSL_PORT=443

假设你想改成 8080 访问,可以设置:

EXPOSE_NGINX_PORT=8080

之后访问地址就是:

http://服务器IP:8080

3. 数据库配置

Dify 默认会通过 Docker Compose 启动 PostgreSQL,一般无需额外配置。

常见配置可能类似:

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

生产环境建议修改默认数据库密码,避免安全风险。

4. Redis 配置

Redis 用于缓存、队列等场景。默认由 Compose 启动:

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=

如果设置了 Redis 密码,需要确保相关服务配置一致。

5. 向量数据库配置

Dify 支持多种向量数据库。默认配置通常可以直接使用内置的向量数据库服务,例如 Weaviate 或其他选项。

常见字段类似:

VECTOR_STORE=weaviate

如果你后续要接入 Milvus、Qdrant、PGVector 等,需要根据官方文档修改配置。


六、启动 Dify 服务

环境变量准备完成后,就可以使用 Docker Compose 启动 Dify。

1. 拉取镜像并启动

dify/docker 目录下执行:

docker compose up -d

这个过程会自动拉取所需镜像,并启动多个容器。首次启动可能需要几分钟,具体取决于服务器网络速度。

2. 查看容器状态

docker compose ps

如果容器状态大多显示为 runninghealthy,说明服务正在正常运行。

也可以使用:

docker ps

查看当前运行中的容器。

3. 查看启动日志

如果想观察启动过程,可以执行:

docker compose logs -f

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

docker compose logs -f api

查看 Worker 日志:

docker compose logs -f worker

查看 Web 日志:

docker compose logs -f web

退出日志查看可以按:

Ctrl + C

七、访问 Dify 控制台

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

http://服务器IP

如果你修改了端口,例如改为 8080,则访问:

http://服务器IP:8080

首次访问时,Dify 会进入初始化页面,你需要创建管理员账号。

一般需要填写:

  • 管理员邮箱
  • 管理员用户名
  • 管理员密码

创建完成后,即可进入 Dify 控制台。


八、配置模型供应商

Dify 部署成功后,还需要配置模型供应商,否则无法真正使用大语言模型能力。

进入控制台后,通常可以按照以下路径配置:

设置 → 模型供应商

Dify 支持多种模型服务,例如:

  • OpenAI
  • Azure OpenAI
  • Anthropic Claude
  • Google Gemini
  • Cohere
  • Hugging Face
  • 通义千问
  • 智谱 AI
  • DeepSeek
  • Moonshot
  • Ollama
  • OpenAI API Compatible 接口

如果你使用的是兼容 OpenAI API 格式的模型服务,可以选择类似:

OpenAI-API-compatible

然后填写:

API Endpoint
API Key
Model Name

例如使用某个兼容接口:

https://api.example.com/v1

模型名示例:

gpt-4o-mini
deepseek-chat
qwen-plus

配置完成后,可以在 Dify 中创建聊天助手、Agent、工作流或知识库应用。


九、防火墙与安全组设置

如果你在云服务器上部署 Dify,需要确认安全组或防火墙已经放行对应端口。

1. Ubuntu UFW 防火墙放行端口

如果你使用的是默认 80 端口:

sudo ufw allow 80/tcp

如果使用 HTTPS:

sudo ufw allow 443/tcp

如果使用 8080:

sudo ufw allow 8080/tcp

启用 UFW:

sudo ufw enable

查看状态:

sudo ufw status

2. 云服务器安全组

如果你使用的是阿里云、腾讯云、华为云、AWS、Azure 等云平台,还需要在控制台安全组中放行对应端口。

例如:

端口 协议 用途
22 TCP SSH 登录
80 TCP HTTP 访问
443 TCP HTTPS 访问
8080 TCP 自定义 Web 端口

十、配置域名访问

如果你希望通过域名访问 Dify,可以将域名解析到服务器 IP。

例如:

dify.example.com → 你的服务器公网 IP

DNS 解析完成后,可以在 .env 中设置访问地址:

CONSOLE_WEB_URL=https://dify.example.com
APP_WEB_URL=https://dify.example.com
SERVICE_API_URL=https://dify.example.com

如果只使用 HTTP,则可以写:

CONSOLE_WEB_URL=http://dify.example.com
APP_WEB_URL=http://dify.example.com
SERVICE_API_URL=http://dify.example.com

修改 .env 后,需要重启服务:

docker compose down
docker compose up -d

或者:

docker compose restart

十一、配置 HTTPS 证书

生产环境强烈建议使用 HTTPS。常见做法有两种:

  1. 使用 Dify 自带 Nginx 配置证书;
  2. 在外部再套一层 Nginx / Caddy / Traefik 作为反向代理。

方式一:使用外部 Nginx 反向代理

假设 Dify 暴露在本机 8080 端口,外部 Nginx 监听 443。

先将 Dify 的端口改为:

EXPOSE_NGINX_PORT=8080

重启 Dify:

docker compose down
docker compose up -d

安装 Nginx:

sudo apt install -y nginx

安装 Certbot:

sudo apt install -y certbot python3-certbot-nginx

申请证书:

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

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/letsencrypt/live/dify.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/dify.example.com/privkey.pem;

    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:8080;
        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;
    }
}

检查 Nginx 配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

十二、常用 Docker Compose 管理命令

1. 启动服务

docker compose up -d

2. 停止服务

docker compose stop

3. 重启服务

docker compose restart

4. 停止并删除容器

docker compose down

注意:该命令会删除容器和网络,但通常不会删除数据卷。

5. 查看日志

docker compose logs -f

6. 查看指定服务日志

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

7. 查看容器资源占用

docker stats

8. 进入某个容器

例如进入 API 容器:

docker compose exec api sh

或:

docker compose exec api bash

十三、升级 Dify

Dify 更新频繁,建议定期关注官方版本。升级前一定要先备份数据,尤其是数据库和上传文件。

1. 进入 Dify 项目目录

cd dify

2. 拉取最新代码

git pull

3. 进入 Docker 目录

cd docker

4. 对比环境变量

新版 Dify 可能会新增环境变量,建议对比 .env.example 和当前 .env

diff .env.example .env

如果新增了必要配置,需要手动补充到 .env 中。

5. 拉取新镜像

docker compose pull

6. 重新启动服务

docker compose down
docker compose up -d

7. 查看状态

docker compose ps

查看日志确认是否正常:

docker compose logs -f

十四、备份 Dify 数据

Dify 的关键数据主要包括:

  • PostgreSQL 数据库
  • 上传文件
  • 向量数据库数据
  • 环境变量配置文件

1. 备份 .env

cp .env .env.backup.$(date +%F)

2. 备份 PostgreSQL 数据库

先查看数据库容器名称:

docker compose ps

假设数据库服务名为 db,可以执行:

docker compose exec db pg_dump -U postgres dify > dify_backup_$(date +%F).sql

如果数据库用户名或数据库名不同,请根据 .env 中配置调整。

3. 备份 Docker 数据卷

查看数据卷:

docker volume ls

你也可以直接备份整个 docker 目录以及 Docker volumes。生产环境建议制定定时备份策略,例如每天凌晨自动备份数据库和上传文件。


十五、常见问题排查

1. 访问不了页面

可以依次检查:

docker compose ps

确认容器是否正常运行。

查看 Nginx 日志:

docker compose logs -f nginx

确认服务器端口是否监听:

sudo ss -tulnp | grep 80

检查防火墙:

sudo ufw status

如果是云服务器,还要检查云平台安全组是否放行端口。


2. 容器启动失败

查看详细日志:

docker compose logs -f

常见原因包括:

  • 服务器内存不足;
  • 端口被占用;
  • 镜像拉取失败;
  • .env 配置错误;
  • Docker 版本过低。

检查端口占用:

sudo lsof -i :80

或者:

sudo ss -tulnp | grep :80

如果 80 端口被占用,可以修改 .env 中的端口配置,例如:

EXPOSE_NGINX_PORT=8080

然后重启:

docker compose down
docker compose up -d

3. 镜像拉取很慢

如果服务器访问 Docker Hub 较慢,可以配置镜像加速器,或者更换网络环境。

编辑 Docker 配置:

sudo mkdir -p /etc/docker

sudo nano /etc/docker/daemon.json

写入类似配置:

{
  "registry-mirrors": [
    "https://docker.m.daocloud.io"
  ]
}

重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

然后重新拉取:

docker compose pull
docker compose up -d

4. 修改环境变量后不生效

如果只是重启某些服务可能不生效,建议完整重启:

docker compose down
docker compose up -d

如果涉及镜像或配置更新,也可以执行:

docker compose up -d --force-recreate

5. 上传文件失败

可以检查:

  • Nginx 上传大小限制;
  • Dify .env 文件上传配置;
  • 磁盘是否已满;
  • 文件存储路径权限。

查看磁盘:

df -h

查看容器日志:

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

如果通过外部 Nginx 反向代理,建议增加:

client_max_body_size 100M;

十六、生产环境部署建议

如果你计划将 Dify 用于企业内部或正式业务,建议注意以下几点。

1. 修改默认密码

包括:

  • 数据库密码
  • Redis 密码
  • 各类 Secret Key
  • 管理员账号密码

不要使用默认值长期运行。

2. 使用 HTTPS

生产环境建议使用 HTTPS,避免 API Key、账号密码等敏感信息明文传输。

3. 设置定期备份

至少备份:

  • PostgreSQL
  • 上传文件
  • 向量数据库数据
  • .env 配置文件

可以使用 crontab 定时执行备份脚本。

4. 控制访问范围

如果 Dify 只给公司内部使用,可以限制来源 IP,或者放在内网/VPN 后面。

5. 监控资源使用

使用以下命令定期查看资源:

docker stats
df -h
free -h

如果 API、Worker 或向量数据库占用过高,需要考虑扩容。


十七、一键部署命令汇总

如果你已经安装好 Docker,可以直接使用下面的命令快速部署:

git clone https://github.com/langgenius/dify.git

cd dify/docker

cp .env.example .env

docker compose up -d

docker compose ps

如果需要修改访问端口:

nano .env

找到端口配置,例如:

EXPOSE_NGINX_PORT=8080

然后重启:

docker compose down
docker compose up -d

访问:

http://服务器IP:8080

十八、完整部署流程示例

下面给出一套从零开始的完整命令,以 Ubuntu 服务器为例。

sudo apt update
sudo apt upgrade -y

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

sudo install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo systemctl enable docker
sudo systemctl start docker

docker --version
docker compose version

git clone https://github.com/langgenius/dify.git

cd dify/docker

cp .env.example .env

docker compose up -d

docker compose ps

如果一切正常,浏览器访问:

http://服务器IP

即可进入 Dify 初始化页面。


十九、总结

使用 Docker Compose 部署 Dify 的整体流程并不复杂,核心步骤可以概括为:

  1. 准备 Linux 服务器;
  2. 安装 Docker 和 Docker Compose;
  3. 克隆 Dify 官方仓库;
  4. 复制并调整 .env 配置;
  5. 执行 docker compose up -d 启动服务;
  6. 浏览器访问服务器 IP 或域名;
  7. 初始化管理员账号并配置模型供应商。

对于个人用户来说,默认配置基本可以直接运行;对于生产环境,则建议重点关注 HTTPS、密码安全、数据备份、访问控制和资源监控。

Dify 的优势在于,它把大模型应用开发中常见的 Prompt 编排、知识库检索、Agent 调用、API 发布和工作流自动化都集成在一个平台中。通过 Docker 部署,你可以在较短时间内搭建一个属于自己的 AI 应用开发平台,无论是做企业内部知识库、智能客服、自动化办公助手,还是构建面向用户的 AI 应用,Dify 都是一个非常值得尝试的选择。

目录结构
全文