Windows 上使用 Docker Compose 一键部署 Dify AI 开发平台

Windows 上使用 Docker Compose 一键部署 Dify AI 开发平台 1. 为什么要在 Windows 上用 Docker 部署 Dify如果你在 Windows 上想搭建一个自己的 AI 应用开发平台,用来快速构建基于大语言模型的聊天机器人、智能助手或者工作流,那么 Dify 是一个绕不开的选择。它把模型调用、知识库、提示词工程、应用编排这些复杂的事情都封装好了,你只需要一个 Web 界面就能操作。但直接部署 Dify 涉及到一堆依赖:Python、PostgreSQL、Redis、向量数据库等等,环境配置非常麻烦,尤其是在 Windows 上,各种路径、权限、版本冲突问题层出不穷。所以,用 Docker 来部署就成了最省心的方案。Docker 把 Dify 和它所有依赖的服务(数据库、缓存、向量引擎)都打包成一个个独立的容器,你只需要几条命令就能让整个系统跑起来,完全不用操心底层环境。对于 Windows 用户来说,这几乎是把部署复杂度降到了最低。但“省心”不代表“无脑”,从准备 Docker 环境,到拉取代码、启动服务,再到最后成功访问,中间有几个关键点如果没处理好,很容易卡住。这篇文章就基于最新的官方指南和常见实践,把在 Windows 上通过 Docker Compose 一键部署 Dify 的完整流程、可能遇到的坑以及排查思路,给你拆解清楚。2. 部署前的核心准备:不仅仅是安装 Docker很多人觉得部署就是照着命令敲,但第一步的环境准备往往决定了后续能否顺利跑通。在 Windows 上,你需要准备的不是一个,而是两个核心环境:WSL 2 和 Docker Desktop。2.1 启用并配置 WSL 2WSL 2(Windows Subsystem for Linux 2)是微软官方提供的 Linux 子系统。Dify 的 Docker 镜像本质上是 Linux 容器,在 Windows 上直接运行 Linux 容器,依赖的就是 WSL 2 后端。没有它,Docker Desktop 就无法正常工作。首先,以管理员身份打开 PowerShell 或 Windows 终端,执行以下命令来启用 WSL 和虚拟机平台功能:# 启用 WSL 功能 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart # 启用虚拟机平台功能(这是 WSL 2 必需的) dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart执行完成后,必须重启电脑。重启后,将 WSL 的默认版本设置为 2:wsl --set-default-version 2接下来,你需要安装一个 Linux 发行版。打开 Microsoft Store,搜索并安装 “Ubuntu” (推荐 22.04 LTS 或 20.04 LTS)。安装完成后,从开始菜单启动 Ubuntu,它会完成初始设置,让你创建用户名和密码。这个 Linux 系统将是 Docker 容器实际运行的地方。关键点:我建议将 Dify 的源代码和后续产生的数据(如数据库文件)都放在这个 WSL 2 的 Linux 文件系统里,而不是 Windows 的盘符(如 C:\)下。因为 Windows 和 Linux 文件系统之间的跨平台文件操作(尤其是 Docker 挂载卷时)可能会有性能问题和权限错误。你可以在 Ubuntu 终端里,在/home/你的用户名/目录下新建一个工作目录,比如dify-workspace。2.2 安装与配置 Docker Desktop访问 Docker 官网,下载适用于 Windows 的 Docker Desktop 安装包。安装过程基本是下一步到底,但安装完成后启动时,有几点需要特别注意:接受服务条款:首次启动会提示。选择使用 WSL 2 后端:在配置界面,确保在 “Settings” - “General” 中,勾选了 “Use the WSL 2 based engine”。同时,在 “Settings” - “Resources” - “WSL Integration” 中,启用你刚安装的 Ubuntu 发行版。这样 Docker 才能和 WSL 2 协同工作。配置资源:在 “Settings” - “Resources” - “Advanced” 中,建议为 Docker 分配至少 2 个 CPU 核心和 8 GB 内存。Dify 运行时会启动多个容器,资源不足可能导致容器启动失败或运行缓慢。配置镜像加速:为了加快拉取镜像的速度