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 界面并完成初始化
相关推荐
IMPYLH6 分钟前
Linux 的 split 命令
linux·运维·python·bash·运维开发·unix
cyber_两只龙宝16 分钟前
【Oracle】Oracle之使用DML语言管理表
linux·运维·服务器·数据库·云原生·oracle
古典和浪漫22 分钟前
docker file 中设置软链接和在k8s 中配置同步时区 有什么区别,各自优缺点
docker·容器·kubernetes
senijusene31 分钟前
基于 Linux SPI 子系统的 ADXL345 加速度传感器驱动开发
linux·运维·驱动开发
成为你的宁宁1 小时前
【K8s ServiceAccount 机制原理与 RBAC 权限实战应用】
云原生·容器·kubernetes
H_老邪1 小时前
CentOS 9 解决 root 登录及重置密码指南
linux·运维·centos
Full Stack Developme1 小时前
Linux CURL 教程
linux·运维·chrome
尘世壹俗人1 小时前
知识点12---k8s进阶操作方式yaml资源文件
docker·容器·kubernetes
尘世壹俗人1 小时前
知识点13---k8s存储持久化
容器·kubernetes·flask
SilentSamsara1 小时前
Kubernetes 网络模型:CNI 插件与 Pod 间通信的底层实现
网络·云原生·容器·架构·kubernetes·k8s