用windows玩dify

1.windows:个人没有私有linux服务设备,之前想入手mac4,奈何预算有限,计划搁置,就继续用win10玩
2.dify社区版:后端即服务,agent大势所趋
3.基础技能:git/docker/shell/linux/python
上终图,浏览器最上边的地址就是我部署好的dify服务地址,其技术原理为在 Windows 宿主机上通过 WSL(Linux 子系统)运行服务,并在同一物理机的不同操作系统环境中实现目标服务的访问。
dify

搭建环境

宿主机:win10
linux子系统:ubuntu22.04(以wsl服务的形式存在在宿主机上)
docker-desktop:选择docker-compose的方式部署dify
目标服务:dify(运行在linux子系统的docker中)
选择部署dify的方式

1.win10安装wsl2

网络教程很多, 安装完成后可在此电脑左边导航栏看到linux子系统,

2.wsl安装ubuntu

网络教程很多,需要注意的是,

  1. 设置完成后保持好自己的username和passport
  2. 设置登录权限,可以直接在windows下对linux内的文件进行读写(编辑脚本、改代码等)
  3. 如果是早已经安装好的wsl,可能需要更新,在更新的时候有很大可能因为网络问题而失败,附带参考链接 docker Desktop安装WSL --update报错问题
    wsl子系统

win10安装docker-desktop

注意:这里的docker使用的是wsl里的ubuntu22.04作为engine,附图
dkcker-desktop
安装成功后可以看到左下角的运行正常
docker engine running

linux子系统里(wsl)部署dify

直接参考dify官方文档Docker Compose 部署,需要注意的是:
1.修改docker-compose.yaml文件,修改配置,我只修改了 negix的配置,如下图
negix配置
增加代码段

- ./nginx/default.conf:/etc/nginx/conf.d/default.conf

2.create 新文件,目录:./nginx/default.conf

server {
    listen 80;
    server_name _;

    location /api {
        proxy_pass http://api:5001;  # 直接使用服务名(非容器名)
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location / {
        proxy_pass http://web:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
  1. 修改完后, 在./dify/docker目录启动镜像
docker-compose down && docker-compose up -d

成功如图
wsl
docker-desktop
4. 宿主机web登录dify,设置user
在这里注意的是,我遇到了登录正常但是显示不正常(具体的现象就是页面只有dify,无登录入口)的问题,启动浏览器的开发者模式查看debug信息,定位到前端连接后端服务失败的问题,解决方案就是步骤3,因为默认的 docker-compose.yml 部署,Nginx 配置文件是未被挂载到宿主机的,要自行配置 yaml文件,Nginx 正确指向 API 容器的服务名称,否则会导致容器间通信失败。
dify登录页面

3种常用部署dify的方式

特性 直接使用 Docker Desktop 拉取镜像 WSL 中通过源代码部署 WSL 中通过 Docker Compose 部署 (本文)
安装难度 ⭐⭐⭐⭐ 极简(一键拉取镜像) ⭐⭐ 复杂(需手动安装依赖) ⭐⭐⭐ 中等(依赖自动化,需编写配置文件)
依赖管理 ⭐⭐⭐⭐ 容器隔离,无污染 ⭐ 需手动管理,易冲突 ⭐⭐⭐⭐ 容器隔离,依赖封装
隔离性 ⭐⭐⭐⭐ 高(独立容器) ⭐ 低(直接运行在用户空间) ⭐⭐⭐⭐ 高(多服务容器隔离)
配置灵活性 ⭐⭐ 低(依赖镜像预设) ⭐⭐⭐⭐ 高(可修改源码) ⭐⭐⭐ 中高(通过 Compose 文件自定义)
资源占用 ⭐⭐⭐ 低(单容器) ⭐⭐ 中高(完整语言环境) ⭐⭐⭐ 中(多容器但可控)
维护成本 ⭐⭐⭐⭐ 低(镜像更新即可) ⭐ 高(需手动维护依赖) ⭐⭐⭐ 中(版本化 Compose 文件)
网络配置 ⭐⭐⭐ 手动映射端口 ⭐⭐ 需配置网络互通 ⭐⭐⭐⭐ 自动桥接网络
适用场景 快速体验 深度定制开发 生产部署、多服务协作
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐