一、前言

Dify 是当下最热门的开源 LLM 应用开发平台,集成了 Agent 编排、RAG 知识库、Workflow 可视化引擎,支持 OpenAI、通义千问、DeepSeek 等数十种模型。官方主推 Docker Compose 一键部署,但对国内开发者来说,GitHub 拉不动、镜像拉不下、内存占满等问题层出不穷。

本文基于 Dify 1.15.0 最新版(2026.06.29 主线提交)(其他版本同理),从零开始带你完成 Docker 本地部署,重点覆盖国内网络优化、WSL2 调优、端口冲突处理等实测踩坑经验。文中的所有配置都已在 Windows 11 + Docker Desktop 4.65 环境验证通过。


二、环境准备:磨刀不误砍柴工

2.1 硬件要求

Dify 的 Docker 编排包含 12+ 个服务容器(api、web、worker、sandbox、postgres、redis、weaviate 等),建议满足以下最低配置:

组件 最低要求 推荐配置
CPU 4 核 8 核
内存 8 GB 16 GB
磁盘 30 GB 50 GB(SSD)

实测 WSL2 默认会占用物理内存的 50%,16GB 内存的机器会被吃掉 8GB。后面会给出限流方案。

2.2 安装 Docker Desktop

Windows 用户直接去官网下载 Docker Desktop 安装包:

https://www.docker.com/products/docker-desktop/

安装时勾选 “Use WSL 2 instead of Hyper-V”,这是性能最优的方案。

安装完成后验证:

docker version        # 确认 Client 和 Server 均正常
docker run hello-world  # 确认可以拉取镜像

2.3 配置 Docker 镜像加速(国内必做)

国内直连 Docker Hub 大概率超时,需要配置镜像加速器。打开 Docker Desktop → Settings → Docker Engine,在 JSON 配置中添加:
在这里插入图片描述

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker.feng.cx",
    "https://docker.m.daocloud.io",
    "https://docker.imgdb.de",
    "https://docker-0.unsee.tech",
    "https://docker.hlmirror.com",
    "https://docker.1ms.run",
    "https://func.ink",
    "https://lispy.org",
    "https://docker.xiaogenban1993.com",
    "https://docker.xuanyuan.me",
    "https://docker.rainbond.cc",
    "https://do.nark.eu.org",
    "https://dc.j8.work",
    "https://docker.hpcloud.cloud",
    "https://docker.unsee.tech",
    "https://docker.1panel.live",
    "http://mirrors.ustc.edu.cn",
    "https://docker.chenby.cn",
    "http://mirror.azure.cn",
    "https://dockerpull.org",
    "https://dockerhub.icu",
    "https://hub.rat.dev"
  ]
}

点击 Apply & Restart,等 Docker 重启后验证:

docker pull hello-world   # 能正常拉取即生效

2.4 WSL2 内存限制(Windows 用户必看)

Docker Desktop 使用 WSL2 作为后端,默认会吃掉物理内存的 50%。在用户目录创建 .wslconfig 限制内存上限:

文件路径: C:\Users\<你的用户名>\.wslconfig

[wsl2]
memory=4GB
processors=4

执行 wsl --shutdown 让配置生效,Docker Desktop 会自动重启。

三、获取 Dify 源码

3.1 从 GitHub 克隆(可选 Gitee 镜像加速)

# 方案 A:GitHub 直连(海外 / 有代理)
git clone https://github.com/langgenius/dify.git

# 方案 B:Gitee 镜像(国内推荐,实测秒级完成)
git clone https://gitee.com/mirrors/dify.git dify

⚠️ Gitee 镜像可能存在数小时的同步延迟,生产环境建议切回 GitHub 源后定期 git fetch origin main

3.2 目录结构速览

进入 dify 目录后,核心文件和目录如下:

dify/
├── docker/                   # Docker 编排相关
│   ├── docker-compose.yaml   # 主编排文件
│   └── .env.example          # 环境变量模板
├── api/                      # Python Flask 后端
├── web/                      # Next.js 前端
└── README.md

四、配置环境变量

4.1 复制模板文件(bash终端执行)

在这里插入图片描述

cd docker
cp .env.example .env

4.2 关键配置项说明(简单看下)

打开 .env 文件,以下是需要关注的核心参数:

# ===== 数据库(默认 postgres,无需修改)=====
DB_USERNAME=postgres
DB_PASSWORD=difyai123456
DB_DATABASE=dify

# ===== Redis(默认密码 difyai123456)=====
REDIS_PASSWORD=difyai123456

# ===== 控制台地址(本地部署保持默认)=====
CONSOLE_API_URL=http://localhost:5001
CONSOLE_WEB_URL=http://localhost:3000
SERVICE_API_URL=http://localhost:5001

# ===== 向量数据库(默认 weaviate)=====
VECTOR_STORE=weaviate

# ===== 文件存储(S3 / 本地存储)=====
STORAGE_TYPE=opendal
OPENDAL_SCHEME=fs
OPENDAL_FS_ROOT=storage

# ===== 模型密钥(部署后可在 Web 界面配置)=====
# 先留空,登录控制台后再添加 API Key

🎯 最小改动原则:首次部署只需确保 CONSOLE_WEB_URLCONSOLE_API_URL 指向本地即可,其余保持默认。


五、启动 Dify

5.1 一键启动

dify/docker/ 目录下执行:

docker compose up -d

这行命令背后发生了什么:

  1. 拉取 12 个镜像:api、web、worker、sandbox、plugin_daemon、nginx、postgres、redis、weaviate、minio、etcd、ssrf_proxy
  2. 创建 3 个 Docker 网络:default、ssrf_proxy_network、milvus(如启用)
  3. 按依赖顺序启动服务:先启动 postgres/redis/weaviate/minio,再启动 api/worker,最后 nginx

5.2 进程监控

第一次启动会比较慢(需要拉取多个镜像),可以用以下命令观察进度:

# 实时查看所有容器状态
docker compose ps

# 查看某个服务的启动日志(用于排错)
docker compose logs -f api
docker compose logs -f web

5.3 镜像拉不动的应急方案

如果 docker compose up -d 卡在 Pulling... 阶段很久没反应,可以用 curl 测试一下镜像源连通性:

curl -I https://mirror.ccs.tencentyun.com

或者手动逐个拉取镜像以定位卡在哪个镜像:

docker pull langgenius/dify-api:1.15.0
docker pull langgenius/dify-web:1.15.0
docker pull langgenius/dify-sandbox:0.2.10
docker pull postgres:15-alpine
docker pull redis:7-alpine

六、验证部署

6.1 检查容器健康状态

docker compose ps

正常情况下 12 个服务都应该是 healthyrunning 状态。如果某个服务一直 restarting,执行:

docker compose logs <服务名> --tail 50

6.2 访问 Dify 控制台

浏览器打开:

http://127.0.0.1/

首次访问会进入初始化页面

  1. 设置管理员邮箱和密码
  2. 点击 “下一步” 完成初始化
  3. 进入 Dify 主界面

6.3 API 健康检查

curl http://localhost:5001/health
# 预期返回: {"status": "ok"}

七、踩坑实录 & 解决方案

以下是本文作者在实际部署中遇到的典型问题及解决办法:

7.1 VmmemWSL 内存占用过高(8GB+)

现象: 任务管理器中 VmmemWSL 进程占用 8GB+ 内存。

原因: WSL2 默认分配物理内存的 50%。

解决: 见 2.4 节创建 .wslconfig 限制为 4GB,执行 wsl --shutdown 重启。

7.2 docker pull 超时 / 连接被拒

现象:

Error response from daemon: dial tcp xxx.xxx.xxx.xxx:443: connectex: 
A connection attempt failed because the connected party did not properly respond

原因: Docker 镜像网络被墙。

解决: 见 2.3 节配置国内镜像加速器,重启 Docker 后重试。

7.3 端口冲突(3000 / 80 / 5001 被占用)

现象: 容器启动失败,日志显示 port is already allocated

解决: 检查端口占用并修改 .env 中的端口映射变量:

# 查看端口占用
netstat -ano | findstr ":3000"

# 修改 .env
EXPOSE_NGINX_PORT=8080       # 将 nginx 从 80 改为 8080
EXPOSE_NGINX_EXPOSE_NGINX_SSL_PORT=4430   # 将 SSL 从 443 改为 4430

7.4 PostgreSQL 数据持久化问题

现象: 每次 docker compose down 后数据丢失。

原因: 未挂载数据卷。

解决: 检查 docker-compose.yaml 中 postgres 服务的 volumes 配置:

postgres:
  volumes:
    - ./volumes/db/data:/var/lib/postgresql/data  # 确保持久化目录存在

7.5 前端 Next.js 开发模式内存溢出

现象: Dify Web 前端(Next.js dev server)占用 6GB+ 内存。

原因: Next.js 开发模式(Webpack)将所有 5000+ 源码文件编译结果缓存在内存中。

解决:web/.env.local 中限制 V8 堆内存:

NODE_OPTIONS=--max-old-space-size=4096

八、常用运维命令速查

# 启动所有服务
docker compose up -d

# 停止所有服务(保留数据)
docker compose stop

# 停止并删除容器(保留数据卷)
docker compose down

# 停止并删除容器 + 数据卷(彻底清理)
docker compose down -v

# 查看各服务资源占用
docker stats

# 查看 api 服务实时日志
docker compose logs -f api

# 重启单个服务
docker compose restart api

# 进入 api 容器内部
docker compose exec api bash

# 更新镜像并重新部署
docker compose pull
docker compose up -d

九、与同类平台的横向对比

维度 Dify LangChain Flowise
部署复杂度 中等(Docker Compose) 低(pip install) 低(npx)
可视化编排 原生工作流引擎 仅代码 拖拽式
RAG 能力 全链路(文档解析→向量化→检索→重排) 需自行组装 基础
多租户 原生支持
插件体系 Builtin + MCP + 自定义 Tool/Agent 社区扩展
适用场景 团队协作、生产级应用 开发框架、灵活定制 个人项目、原型验证

十、总结

Dify 是目前最成熟的开源 LLM 应用平台之一,Docker Compose 部署虽然涉及十多个服务,但只要解决了镜像加速WSL2 内存限制两个关键问题,整个部署流程 30 分钟内可以完成。

回顾关键步骤:

  1. 装 Docker Desktop,配镜像加速
  2. .wslconfig 限制 WSL2 内存 → wsl --shutdown
  3. 克隆源码 → cp .env.example .envdocker compose up -d
  4. 访问 http://127.0.0.1/ 初始化管理员账号
    在这里插入图片描述

📌 版本信息

  • Dify:1.15.0(2026.06.29 主线提交 49a92f0
  • Docker Desktop:4.65.0
  • 操作系统:Windows 11

📌 参考链接

  • Dify 官方仓库:https://github.com/langgenius/dify
  • Dify 官方文档:https://docs.dify.ai
  • Docker 镜像加速器:https://cloud.tencent.com/document/product/1207

更多推荐