
上周帮一位朋友在一台 Windows 11 开发机上部署 Dify前后折腾了将近一个下午。起初以为不过是docker compose up -d一把梭的事结果被底层 WSL2 的资源分配、Docker Desktop 的网络模式、以及第一次启动时那批容器间的依赖顺序轮番教育了一顿。跑通之后我特意把整个过程按时间线重做了一遍才有了这篇实战记录。这篇文章写给谁看主要是自己手头只有 Windows 机器、想快速把 Dify 跑起来做 LLM 应用原型验证的开发者也包括那些已经用 Docker Desktop 跑过其他项目、但对 Dify 这种多容器编排还不太熟的读者。内容会覆盖从环境检查、目录规划、配置修改到踩坑排查的完整链路尽量做到你照着做就能复现同时把每个关键动作背后的原因讲清楚。1. 为什么我选择在 Windows 上部署 Dify场景与选型背景1.1 部署 Dify 前先想清楚的问题本地跑还是服务器跑Dify 是一个开源的大语言模型应用开发平台核心能力是把 RAG 流程、Agent 编排、Prompt 管理、模型接入这些环节包装成可视化的操作界面。它的典型部署形态是 Docker Compose 编排一组容器默认包含 API 后端、Worker 异步任务队列、Web 前端、PostgreSQL、Redis、Sandbox 代码沙箱以及用于向量检索的 Weaviate。整套服务起来之后你会得到一个带可视化工作流的 LLM 应用搭建环境不需要自己从头写前端和后台接口。选择在 Windows 上部署最常见的理由是没有独立的 Linux 服务器或者只是想在本地验证一个想法。比如我接的一个模拟项目 X需要在两天内给客户演示一个基于知识库的问答机器人如果先去申请云主机、配域名、搞 HTTPS时间根本不够。本地 Windows Docker 是最短路径仓库克隆下来启动 Compose 编排浏览器打开就能跑。但也必须说实话Windows 上的 Docker 并不是原生 Linux 容器中间隔着一层虚拟化。你选择这条路就同时选择了要处理 WSL2 的资源分配、Docker Desktop 的磁盘占用、以及容器网络在 Windows 下的特殊行为。这篇文章第二、三节就是围绕这些点展开的。1.2 Windows 跑 Docker 的三种方式对比我在准备环境时把几种方案都过了一遍列个表供你参考方案底层原理适合场景需要注意的问题Docker Desktop WSL2在 WSL2 发行版中运行真正的 Linux 内核Docker 引擎与容器共享该内核日常开发、原型验证、个人使用资源占用偏高WSL2 内存分配需要手动调优Docker Desktop Hyper-VWindows Hyper-V 虚拟机承载 Linux 虚拟机老版本 Windows 或不想用 WSL2 的环境性能不如 WSL2 灵活配置相对繁琐Docker Toolbox / VirtualBoxVirtualBox 虚拟机运行 boot2docker非常老的系统兼容性差基本不建议再碰我这次用的是 Docker Desktop WSL2 的组合。原因很简单Docker Desktop 是目前 Windows 下体验最顺畅的 Docker 运行方式而 WSL2 模式比 Hyper-V 模式更轻量、启动更快、文件读写性能也更好。需要注意的是WSL2 默认会“吃掉”宿主机最多 50% 的内存如果电脑本身只有 16GB跑起 Dify 全家桶后剩下的容量会非常紧张这个在第三节会详细说。如果你还在犹豫用 Docker Desktop 还是直接在 WSL2 发行版里装 Docker Engine我的建议是追求省心就用 Docker Desktop因为它帮你管理了 daemon 的启动、代理配置和文件挂载如果你希望容器环境尽量贴近服务器 Linux那就在 WSL2 里装原生的 docker-ce只是后续维护成本高一些。2. 从零准备 Windows Docker 环境WSL2 与 Docker Desktop 的配置细节2.1 确认 WSL2 状态一句命令看全局很多人部署 Dify 失败第一步就栽在 WSL 版本上。Docker Desktop 想要稳定运行WSL 必须是 2.x 版本而不是 1.x。检查方法在 PowerShell 或 CMD 里执行wsl --status正常输出会显示“默认版本: 2”并且列出已安装的发行版。还可以用这条命令看得更细wsl -l -v输出中每个发行版前面的“VERSION”列显示为 2才算达标。如果显示是 1用下面命令转换默认版本wsl --set-default-version 2需要注意的是新装的 Windows 11 通常默认就是 WSL2但 Windows 10 老版本可能需要先手动启用“适用于 Linux 的 Windows 子系统”和“虚拟机平台”两个可选功能。启用方法是在 PowerShell管理员里执行dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart执行完重启电脑再回到wsl --status检查。这一步没有捷径跳过往往会在后续容器启动时报莫名其妙的错误。我遇到过一次 Docker Desktop 提示“WSL kernel version too low”就是因为系统只开了 WSL 功能而虚拟化平台没启用补上之后问题立刻消失。2.2 Docker Desktop 安装后的两个关键设置安装 Docker Desktop 本身不用多说官网下载安装包一路下一步即可。但装完之后有两个设置必须手动确认否则 Dify 的容器编排会在启动阶段翻车。第一个是设置里的 “General” 选项卡必须确保勾选 “Use the WSL 2 based engine”。Docker Desktop 现在默认就是 WSL2 模式但有些旧版本或迁移过配置的环境可能会退回 Hyper-V 模式。第二个是 “Resources” 选项卡里的内存分配。Docker Desktop 默认会给 WSL2 分配的内存是宿主机物理内存的 50%但上限有时并不够 Dify 使用。我建议至少给到 8GB最好 12GB 以上。如果内存吃紧后面web容器构建前端静态资源时非常容易触发 OOM容器状态会一直显示Restarting日志里全是Killed。你可以在设置界面直接调整内存滑杆也可以更精确地通过文件配置。在用户目录C:\Users\用户名下新建或编辑.wslconfig文件内容示例[wsl2] memory12GB processors6 swap8GB localhostForwardingtrue保存后执行wsl --shutdown让配置生效然后重启 Docker Desktop。localhostForwardingtrue这个选项很关键它保证 Windows 浏览器可以通