dify windows wsl子系统部署步骤(docker)

以下根据回忆整理,供日后翻阅

一、安装wsl子系统 #替代vmware虚拟机,gpu性能会更高

1.打开windows功能

在win10里,控制面板--》程序-->启用或关闭windows功能--》勾选 hyper-V、适用于windows的linux子系统、虚拟机平台(大概叫这些名,本人win11没有勾选后两个)

2.微软商店里安装自己喜欢的linux(非必须,执行运行wsl可进入linux命令行),如下图:

5.png

执行wsl --install (默认安装ubuntu,网速慢建议直接微软商店安装),本人微软商店安装winch wsl(即archlinux),以下均以archlinux方式安装,可装linux如下图


6.png

3.修改root密码

# windows命令提示符
wsl --user root
# wsl linux内(后续简称wsl)
passwd #修改密码

4.wsl内安装docker (root用户)

# 1.修改国内源为清华源
cat <<! > /etc/pacman.d/mirrorlist
Server = https://mirrors.tuna.Tsinghua.edu.cn/archlinux/$repo/os/$arch 
!

# 2.更新全部组件
pacman -Syu

# 3.安装必要组件
pacman -S git docker docker-compose lvm2 # 不用lvm分区的话,lvm2非必须

# 4.挂载ext4硬盘(需要一块独立硬盘或者创建虚拟磁盘才行,如直接使用NTFS,性能下降90%)
# 虚拟磁盘手工创建方法:
# 右键点开始菜单--》磁盘管理--》选中分区--》操作--》创建VHD,重启电脑(或者其他可以让磁盘解除占用的方法)
# 执行下面挂载磁盘的命令
# 下面这条命令在windows命令提示符下运行可创建150G动态拓展的虚拟磁盘(本人使用独立硬盘)
# New-VHD -Dynamic -SizeBytes 150GB -BlockSizeBytes 1MB -Path "E:\wsl_disk.vhdx"
# 右键VHDX文件→「属性」→「安全」→「编辑」。添加Authenticated Users组,勾选「完全控制」权限。
# 挂载磁盘:wsl --mount --vhd "E:\wsl_disk.vhdx" --bare  # 如果成功,下面命令都忽略;如果不识别命令,则检查wsl是否不是wsl2 ,wsl -l -v 可查看wsl版本
# wsl --update #升级到wsl2  ,执行wsl --set-version <发行版> 2 为当前安装的linux子系统切换到wsl2
# windows命令提示符操作(管理员权限)
   wmic diskdrive list brief  # 从结果找出磁盘号
   wmic partition list brief  # 从结果找出分区号
   wsl --mount \\.\PHYSICALDRIVE0 --partition 0 --bare #挂载
# wsl linux子系统操作
lsblk #查看磁盘 找到设备 如/dev/sdb
cfdisk 分区 # gpt格式,分为1个区 /dev/sdb1
# lvm分区 (不用lvm可忽略)
pvcreate /dev/sdb1 #创建pv
vgcreate vg /dev/sdb1 # 创建vg
lvcreate -L +100%FREE vg -n data # 这里只分一个区名为/dev/mapper/vg-data
# 格式化ext4
mkfs.ext4 /dev/mapper/vg-data # 没有lvm的用/dev/sdb1

# 挂载到/data
mkdir /data
mount /dev/mapper/vg-data /data

# 5.为docker配置文件指定data-root 和国内源
mkdir /lib/systemd/system/docker.service.d
cat <<! > /lib/systemd/system/docker.service.d/override.conf #直接修改/lib/systemd/system/docker.service文件也可以,这里override.conf是为了防止archlinux滚动更新时覆盖掉原文件
[Service]                                                                                                               
ExecStart=                                                                                                              
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/data/dockerdata --registry-mirror=https://docker.m.daocloud.io 
!

# 6.启动docker
systemctl start docker

5.安装dify (正题才是这里,前面其实都可忽略,获取源码后其实就两步,超级简单,5-10分钟吧,看网速)

# 1.拉取dify源码
mkdir /data/git
cd /data/git
# 注意一下,这里gitclone.com做了国内加速
git clone https://gitclone.com/github.com/langgenius/dify.git

# 2.设置环境变量
cd /data/git/dify/docker
cp .env.example .env # 隐藏文件,生成环境变量,修改端口在.env里改,修改EXPOSE_NGINX_PORT=8001

# 3.部署dify
docker compose up -d # 等待拉取镜像和启动即可
# 启动完后是这样的:
[+] Running 12/12                                                                                                       
 ✔ Network docker_default             Created                                                                      0.0s 
 ✔ Network docker_ssrf_proxy_network  Created                                                                      0.0s 
 ✔ Container docker-sandbox-1         Started                                                                      1.5s 
 ✔ Container docker-weaviate-1        Started                                                                      1.7s 
 ✔ Container docker-db-1              Healthy                                                                      5.0s 
 ✔ Container docker-web-1             Started                                                                      1.5s 
 ✔ Container docker-ssrf_proxy-1      Started                                                                      1.8s 
 ✔ Container docker-redis-1           Started                                                                      1.4s 
 ✔ Container docker-worker-1          Started                                                                      1.3s 
 ✔ Container docker-api-1             Started                                                                      1.4s 
 ✔ Container docker-plugin_daemon-1   Started                                                                      4.5s 
 ✔ Container docker-nginx-1           Started                                                                      1.6s 
# 查看容器运行
docker compose ps
NAME                     IMAGE                                       COMMAND                  SERVICE         CREATED          STATUS                    PORTS                                                                                  
docker-api-1             langgenius/dify-api:1.2.0                   "/bin/bash /entrypoi…"   api             41 minutes ago   Up 41 minutes             5001/tcp                                                                               
docker-db-1              postgres:15-alpine                          "docker-entrypoint.s…"   db              41 minutes ago   Up 41 minutes (healthy)   5432/tcp                                                                               
docker-nginx-1           nginx:latest                                "sh -c 'cp /docker-e…"   nginx           41 minutes ago   Up 41 minutes             0.0.0.0:443->443/tcp, [::]:443->443/tcp, 0.0.0.0:8001->80/tcp, [::]:8001->80/tcp       
docker-plugin_daemon-1   langgenius/dify-plugin-daemon:0.0.7-local   "/bin/bash -c /app/e…"   plugin_daemon   41 minutes ago   Up 41 minutes             0.0.0.0:5003->5003/tcp, [::]:5003->5003/tcp                                            
docker-redis-1           redis:6-alpine                              "docker-entrypoint.s…"   redis           41 minutes ago   Up 41 minutes (healthy)   6379/tcp                                                                               
docker-sandbox-1         langgenius/dify-sandbox:0.2.11              "/main"                  sandbox         41 minutes ago   Up 41 minutes (healthy)                                                                                          
docker-ssrf_proxy-1      ubuntu/squid:latest                         "sh -c 'cp /docker-e…"   ssrf_proxy      41 minutes ago   Up 41 minutes             3128/tcp                                                                               
docker-weaviate-1        semitechnologies/weaviate:1.19.0            "/bin/weaviate --hos…"   weaviate        41 minutes ago   Up 41 minutes                                                                                                    
docker-web-1             langgenius/dify-web:1.2.0                   "/bin/sh ./entrypoin…"   web             41 minutes ago   Up 41 minutes             3000/tcp                                                                               
docker-worker-1          langgenius/dify-api:1.2.0                   "/bin/bash /entrypoi…"   worker          41 minutes ago   Up 41 minutes             5001/tcp                                                                        

6.进入dify后台

ip a #查看ip ,这里找到网卡eth0 ,ip为172.29.200.100

windows访问浏览器地址http://172.29.200.100:8001即可
注册后界面举例如下:


1.jpg
2.jpg
3.jpg
4.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。