一、前言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 等建议满足以下最低配置组件最低要求推荐配置CPU4 核8 核内存8 GB16 GB磁盘30 GB50 GBSSD实测 WSL2 默认会占用物理内存的 50%16GB 内存的机器会被吃掉 8GB。后面会给出限流方案。2.2 安装 Docker DesktopWindows 用户直接去官网下载 Docker Desktop 安装包https://www.docker.com/products/docker-desktop/安装时勾选“Use WSL 2 instead of Hyper-V”这是性能最优的方案。安装完成后验证dockerversion# 确认 Client 和 Server 均正常dockerrun 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 重启后验证dockerpull hello-world# 能正常拉取即生效2.4 WSL2 内存限制Windows 用户必看Docker Desktop 使用 WSL2 作为后端默认会吃掉物理内存的 50%。在用户目录创建.wslconfig限制内存上限文件路径C:\Users\你的用户名\.wslconfig[wsl2] memory4GB processors4执行wsl --shutdown让配置生效Docker Desktop 会自动重启。三、获取 Dify 源码3.1 从 GitHub 克隆可选 Gitee 镜像加速# 方案 AGitHub 直连海外 / 有代理gitclone https://github.com/langgenius/dify.git# 方案 BGitee 镜像国内推荐实测秒级完成gitclone 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终端执行cddockercp.env.example .env4.2 关键配置项说明简单看下打开.env文件以下是需要关注的核心参数# 数据库默认 postgres无需修改DB_USERNAMEpostgresDB_PASSWORDdifyai123456DB_DATABASEdify# Redis默认密码 difyai123456REDIS_PASSWORDdifyai123456# 控制台地址本地部署保持默认CONSOLE_API_URLhttp://localhost:5001CONSOLE_WEB_URLhttp://localhost:3000SERVICE_API_URLhttp://localhost:5001# 向量数据库默认 weaviateVECTOR_STOREweaviate# 文件存储S3 / 本地存储STORAGE_TYPEopendalOPENDAL_SCHEMEfsOPENDAL_FS_ROOTstorage# 模型密钥部署后可在 Web 界面配置# 先留空登录控制台后再添加 API Key最小改动原则首次部署只需确保CONSOLE_WEB_URL和CONSOLE_API_URL指向本地即可其余保持默认。五、启动 Dify5.1 一键启动在dify/docker/目录下执行dockercompose up-d这行命令背后发生了什么拉取 12 个镜像api、web、worker、sandbox、plugin_daemon、nginx、postgres、redis、weaviate、minio、etcd、ssrf_proxy创建 3 个 Docker 网络default、ssrf_proxy_network、milvus如启用按依赖顺序启动服务先启动 postgres/redis/weaviate/minio再启动 api/worker最后 nginx5.2 进程监控第一次启动会比较慢需要拉取多个镜像可以用以下命令观察进度# 实时查看所有容器状态dockercomposeps# 查看某个服务的启动日志用于排错dockercompose logs-fapidockercompose logs-fweb5.3 镜像拉不动的应急方案如果docker compose up -d卡在Pulling...阶段很久没反应可以用 curl 测试一下镜像源连通性curl-Ihttps://mirror.ccs.tencentyun.com或者手动逐个拉取镜像以定位卡在哪个镜像dockerpull langgenius/dify-api:1.15.0dockerpull langgenius/dify-web:1.15.0dockerpull langgenius/dify-sandbox:0.2.10dockerpull postgres:15-alpinedockerpull redis:7-alpine六、验证部署6.1 检查容器健康状态dockercomposeps正常情况下 12 个服务都应该是healthy或running状态。如果某个服务一直restarting执行dockercompose logs服务名--tail506.2 访问 Dify 控制台浏览器打开http://127.0.0.1/首次访问会进入初始化页面设置管理员邮箱和密码点击 “下一步” 完成初始化进入 Dify 主界面6.3 API 健康检查curlhttp://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# 修改 .envEXPOSE_NGINX_PORT8080# 将 nginx 从 80 改为 8080EXPOSE_NGINX_EXPOSE_NGINX_SSL_PORT4430# 将 SSL 从 443 改为 44307.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-size4096八、常用运维命令速查# 启动所有服务dockercompose up-d# 停止所有服务保留数据dockercompose stop# 停止并删除容器保留数据卷dockercompose down# 停止并删除容器 数据卷彻底清理dockercompose down-v# 查看各服务资源占用dockerstats# 查看 api 服务实时日志dockercompose logs-fapi# 重启单个服务dockercompose restart api# 进入 api 容器内部dockercomposeexecapibash# 更新镜像并重新部署dockercompose pulldockercompose up-d九、与同类平台的横向对比维度DifyLangChainFlowise部署复杂度中等Docker Compose低pip install低npx可视化编排原生工作流引擎仅代码拖拽式RAG 能力全链路文档解析→向量化→检索→重排需自行组装基础多租户原生支持无无插件体系Builtin MCP 自定义Tool/Agent社区扩展适用场景团队协作、生产级应用开发框架、灵活定制个人项目、原型验证十、总结Dify 是目前最成熟的开源 LLM 应用平台之一Docker Compose 部署虽然涉及十多个服务但只要解决了镜像加速和WSL2 内存限制两个关键问题整个部署流程 30 分钟内可以完成。回顾关键步骤装 Docker Desktop配镜像加速建.wslconfig限制 WSL2 内存 →wsl --shutdown克隆源码 →cp .env.example .env→docker compose up -d访问http://127.0.0.1/初始化管理员账号版本信息Dify1.15.02026.06.29 主线提交49a92f0Docker Desktop4.65.0操作系统Windows 11参考链接Dify 官方仓库https://github.com/langgenius/difyDify 官方文档https://docs.dify.aiDocker 镜像加速器https://cloud.tencent.com/document/product/1207