WSL2 + Docker Desktop 部署 Dify

在 Windows 环境,推荐WSL2 + Docker Desktop

  • 启用 WSL2 子系统
  • 安装 Docker Desktop for Windows
  • 在 WSL2 中使用 Docker Compose 部署 Dify
  • 优势:接近 Linux 原生体验,兼容性好

Dify 官方系统要求(2025-2026 最新版本):

环境类型 CPU 内存 磁盘空间
最低配置(测试环境) 2 核 4GB 20GB SSD
推荐配置(生产环境) 4 核 8GB 50GB SSD

推荐方案

✅ 推荐版本:Dify 1.7.x 或最新稳定版(v1.8+)

第一阶段:环境准备(约 15 分钟)

1. 启用 WSL2 功能

以管理员身份打开 PowerShell,依次执行:

powershell 复制代码
# 启用 WSL 功能
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

# 启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
powershell 复制代码
# 重启电脑后,设置 WSL2 为默认版本
PS C:\Windows\system32> wsl --list --verbose
版权所有(c) Microsoft Corporation。保留所有权利。
用法: wsl.exe [Argument]
参数:
--install
安装适用于 Linux 的 Windows 子系统功能。如果未指定任何选项,
则推荐的功能将与默认分发一起安装。
若要查看默认分发以及其他有效分发的列表,
请使用 "wsl --list --online"。
选项:
--distribution、-d [Argument]
按名称指定要下载和安装的分发。
参数:
有效的分发名称(不区分大小写)。
示例:
wsl --install -d Ubuntu
wsl --install --distribution Debian
--inbox
安装可选 Windows 功能,而不是 Microsoft Store 中提供的版本。
--no-distribution
不安装分发(无法和 --distribution 一起使用)。
--no-launch, -n
安装后不启动发行版。
--web-download
从 Internet 上下载最新的 WSL 版本,而不是从 Microsoft Store 下载。
--list, -l [Options]
列出发行版。
选项:
--online, -o
显示可用的发行版列表,以使用 'wsl --install' 安装。
--status
显示适用于 Linux 的 Windows 子系统的状态。
--help
显示使用情况信息。

命令 wsl --list --verbose 没有返回预期的已安装发行版列表,而是显示了帮助信息。这表明 WSL 可能尚未安装,或者命令执行有问题。从输出可以看出,WSL 命令返回了帮助信息而不是已安装的发行版列表,这表明 WSL 尚未安装 或者没有已安装的发行版。

安装命令:

powershell 复制代码
# 安装默认的 Ubuntu 发行版
wsl --install

# 或者指定安装 Ubuntu
wsl --install -d Ubuntu

安装完成后:

安装完成后需要重启计算机,然后再次运行:

powershell 复制代码
# wsl --list --verbose 缩写
wsl -l -v

就可以查看已安装的发行版状态了。

2. 安装 Ubuntu 22.04 LTS

在 Microsoft Store 搜索并安装 Ubuntu 22.04 LTS,首次启动时设置用户名和密码。

验证 WSL 版本:

powershell 复制代码
# 确保显示 VERSION 为 2
wsl --list --verbose

3. 安装 Docker Desktop

  1. 官网下载
  2. 安装时勾选 "Use WSL 2 instead of Hyper-V"
  3. 启动 Docker Desktop,进入设置:
  • General: 勾选 "Use the WSL 2 based engine"
  • Resources > WSL Integration: 启用 Ubuntu
  • Resources: 分配 4-6GB内存给 Docker

第二阶段:Dify 部署(约 20 分钟)

1. 在 WSL2 中安装基础工具

打开 Ubuntu 终端:

powershell 复制代码
# 更新软件源
sudo apt update && sudo apt upgrade -y

# 安装必要工具
sudo apt install -y git curl wget

2. 克隆 Dify 源码

powershell 复制代码
# 创建工作目录
mkdir -p ~/dify && cd ~/dify

# 克隆官方仓库(建议使用最新 Release 版本)
git clone https://github.com/langgenius/dify.git
cd dify/docker

# 或者切换到特定稳定版本(如 v1.8.0)
# git checkout v1.8.0

3. 配置文件(依次执行)

powershell 复制代码
# 复制环境变量模板
cp .env.example .env

# 生成安全密钥(重要!)
SECRET_KEY=$(openssl rand -base64 42)
DB_PASSWORD=$(openssl rand -hex 16)
REDIS_PASSWORD=$(openssl rand -hex 16)

# 使用 sed 替换关键配置
sed -i "s/SECRET_KEY=/SECRET_KEY=$SECRET_KEY/" .env
sed -i "s/DB_PASSWORD=/DB_PASSWORD=$DB_PASSWORD/" .env
sed -i "s/REDIS_PASSWORD=/REDIS_PASSWORD=$REDIS_PASSWORD/" .env

# 可选:修改端口(如果 80 被占用)
sed -i "s/EXPOSE_NGINX_PORT=80/EXPOSE_NGINX_PORT=8181/" .env

4. 一键启动

powershell 复制代码
# 首次启动(后台运行)
docker compose up -d

# 查看启动进度
docker compose logs -f

# 按 Ctrl+C 退出日志查看

首次启动需要下载约 10+ 个镜像,耗时 5-15 分钟(取决于网络)。

5. 访问 Dify

浏览器打开:http://localhost:端口(或自定义端口如http://localhost:8181

首次访问会进入初始化向导,设置管理员账号即可。

第三阶段:优化配置(针对团队使用)

1. 配置国内镜像加速

编辑 /etc/docker/daemon.json:

powershell 复制代码
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://hub.rat.dev",
    "https://mirror.ccs.tencentyun.com"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

重启 Docker:

powershell 复制代码
sudo systemctl restart docker

2. 数据持久化备份

Dify 的数据存储在 Docker Volume 中,建议定期备份:

powershell 复制代码
# 创建备份目录
mkdir -p ~/dify-backup

# 备份 PostgreSQL 数据库
docker exec dify-db pg_dump -U postgres -d dify > ~/dify-backup/dify-$(date +%Y%m%d).sql

# 备份 .env 配置文件
cp ~/dify/docker/.env ~/dify-backup/.env-backup

⚠️ 关键注意事项

1. 存储优化(非常重要!)

如果配置有 SSD + HDD 混合存储,必须注意:

powershell 复制代码
# 检查 Docker 数据存储位置
docker info | grep "Docker Root Dir"

# 确保 Docker 数据在 SSD 上(通常是 C 盘)
# 如果在 HDD 上,向量数据库检索会非常慢

建议:将 Dify 工作目录放在 SSD 分区(如 C:\Users\你的用户名\dify),通过 WSL2 挂载访问。

2. 团队访问配置

默认情况下 Dify 只监听 localhost,团队成员无法访问。需要:

方案 A:修改绑定地址
powershell 复制代码
# 编辑 .env 文件
sed -i "s/CONSOLE_API_URL=http:\/\/localhost/CONSOLE_API_URL=http:\/\/你的局域网 IP/" .env
sed -i "s/SERVICE_API_URL=http:\/\/localhost/SERVICE_API_URL=http:\/\/你的局域网 IP/" .env

# 重启服务
docker compose down
docker compose up -d
方案 B:使用 Nginx 反向代理(推荐生产环境)

3. 性能监控

建议监控资源使用:

powershell 复制代码
# 查看容器资源占用
docker stats

# 查看 Dify 各服务状态
docker compose ps

部署检查清单

  • WSL2 已启用且版本为 2
  • Docker Desktop 已安装并配置 WSL2 集成
  • Docker 分配内存 ≥4GB
  • Dify 工作目录位于 SSD 分区
  • .env 文件中 SECRET_KEY、DB_PASSWORD 已修改为随机值
  • 防火墙已放行 8181 端口(或自定义端口)
  • 所有容器状态为 Up(docker compose ps)
  • 能正常访问 Web 界面并完成初始化
相关推荐
梦年华12 小时前
Dell 避风港实验环境部署(四)CyberRecovery配置与恢复演练
linux·运维·centos
riNt PTIP2 小时前
RustDesk搭建公网中继服务器远控内网机器(完整版)
运维·服务器
进击的码力2 小时前
/dev/nume0n1p2导致ubuntu系统无法启动
linux·运维·ubuntu
安科士andxe2 小时前
实践指南|安科士SFP-10/25G-LR-S-I光模块部署与运维技巧
运维·人工智能·5g
不愿透露姓名的大鹏2 小时前
VMware vSphere开通用户和分配权限
linux·运维·服务器·vmware
芥子沫3 小时前
可独立部署的健身饮食管理推荐:wger,Docker一键安装部署教程
docker·容器·开源·健身
robin59113 小时前
【技术】更改docker网络MTU办法
网络·docker·容器
恼书:-(空寄3 小时前
K8s Ingress 七层网关 + 灰度发布 + HTTPS 实战
容器·kubernetes
童话的守望者3 小时前
matrix-breakout-2-morpheus靶机通关
linux·运维·服务器