在智算云平台上部署 Dify
Dify 是一个开源项目,旨在提供可视化编排生成式 AI 应用的专业工作站。该项目的 Github 仓库地址为:https://github.com/langgenius/dify,截止本教程最新版 tag 为 1.1.3。
NOTE
如果只需要了解在 Dify 中如何配置 GenStudio API,请移步文末 使用 Dify 集成 GenStudio API。
方案概述
我们将使用智算云平台「开发机」功能来部署 Dify。
- 使用 Dify 官方文档基于 Docker Compose 的部署方案: Docker Compose 部署。
- 使用 AIStudio 开发机的 Docker 容器功能。该功能允许用户在开发机内(主容器)运行其他容器,并创建挂载 GPU 的容器,测试容器化应用,从而提供更高的灵活性和隔离性:Docker 容器 。
- 使用 AIStudio 开发机的 Web 应用预览功能。该功能允许用户提供一个开发机内部 Web UI 服务端口,由平台监听并生成访问链接: Web 应用预览。
本方案仅用于在智算云平台 AIStudio 开发机上测试、体验 Dify 平台,非生产级别服务部署方案。
实施障碍
在智算云平台的开发机中安装 Dify 时,如果根据 Dify 官方文档进行操作,可能会遇到一些障碍:
- 开发机默认未预装 Docker Compose 工具,需要自行安装 Docker Compose。
- 由于运营商网络限制,可能无法顺利拉取 GitHub 代码仓库,需要使用第三方学术加速服务或代理工具。
- 由于运营商网络限制,不支持直接拉取 Docker Hub 镜像,需要自行获取镜像并提前存入租户在平台的私有镜像仓库,或使用代理工具。
环境准备
创建一台开发机,要求如下:
- 推荐使用 Ubuntu 22.04 操作系统镜像
- Dify 不使用 GPU,CPU/内存基本要求为 2c4g。开发机算力规格主要由您的本地模型推理需求决定,如简单测试,选择单卡 GPU 即可。
- 请确保为开发机开启 Docker 容器功能,请在创建开发机时启用「Docker 容器」开关。
- 请确保为开发机填写 Web 应用预览端口,用于后续方案 Dify 控制台。本教程假设端口号为 9999。
安装 Docker Compose
验证 Docker Compose 是否已安装。
docker compose version
如已安装,将正常输出版本号。如未安装 Docker Compose,请移步自行安装 Docker Compose。
拉取 Dify 项目代码
拉取 Dify GitHub 代码仓库。以下示例中已添加第三方加速服务前缀。
cd /root
# 拉取 Dify 代码仓库
git clone https://ghfast.top/https://github.com/langgenius/dify.git --branch 1.1.3
如遇到问题,可尝试替换为其他加速服务。详见第三方学术加速服务指南。
处理 Docker 镜像问题
Dify 原始 Docker Compose 文件中定义了多个服务,使用了 Docker Hub 镜像。由于运营商网络原因,直接拉取 Docker Hub 镜像时会下载失败。
WARNING
以下方案均需要您自行寻找代理工具,或第三方 Docker 镜像加速服务。智算云平台不提供此类服务。请务必解决镜像问题,否则无法继续执行后续步骤。
方案一 使用 Docker 服务代理工具
在有自备代理工具的情况下,该方案较为简便。本教程中采用方案一。
以 Clash 类工具为例,从第三方获取相关服务凭证后,可在 AIStudio 开发机中安装客户端。详见 第三方学术加速服务或代理工具。
在开发机中启动您的代理服务,假设您的本地 HTTP 代理服务运行在 127.0.0.1,端口为 7890。
为开发机 Docker 服务配置代理。
shell# 创建目录 mkdir -p /etc/docker # 创建 Docker 服务配置文件 touch /etc/docker/daemon.json
在
/etc/docker/daemon.json
写入如下内容:json{ "proxies": { "http-proxy": "http://127.0.0.1:7890", "https-proxy": "http://127.0.0.1:7890", "no-proxy": "*.test.example.com,.example.org,127.0.0.0/8" }, "registry-mirrors": ["https://<my-docker-mirror-host>"] }
使用 Dockerctl 重启 Docker 服务。
shelldockerctl restart
方案二 提前拉取 Docker 镜像
您也可以提前手动拉取 Docker Compose 服务镜像,保存到租户私有仓库。
- 使用第三方镜像加速服务,拉取 amd64 架构的镜像到本地,推送到租户镜像仓库。请参考迁移外部镜像。
- 或直接在 Compose 文件使用第三方镜像加速服务,例如直接在 Compose 文件中采用增加前缀的方式拉取镜像。
修改环境变量
进入 Dify 源代码的 Docker 目录。
cd dify/docker
复制环境配置文件。
cp .env.example .env
需要修改 Dify 项目中 NGINX 配置,默认为 80,请修改 EXPOSE_NGINX_PORT
为开发机的 Web 应用预览端口(本教程中该端口号为 9999)。
# ------------------------------
# Docker Compose Service Expose Host Port Configurations
# ------------------------------
EXPOSE_NGINX_PORT=9999
EXPOSE_NGINX_SSL_PORT=44443
启动 Dify 服务
docker compose up -d
启动完成后,可通过 docker ps
检查服务健康状态。输出示例:
root@is-dazzy7xv2ymalks7-devmachine-0:~/dify/docker# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c123a7bedcd nginx:latest "sh -c 'cp /docker-e…" 2 minutes ago Up 2 minutes 0.0.0.0:9999->80/tcp, :::9999->80/tcp, 0.0.0.0:44443->443/tcp, :::44443->443/tcp docker-nginx-1
69b1d31195b2 langgenius/dify-api:1.1.3 "/bin/bash /entrypoi…" 2 minutes ago Up 2 minutes 5001/tcp docker-worker-1
2dc5392950b3 langgenius/dify-api:1.1.3 "/bin/bash /entrypoi…" 2 minutes ago Up 2 minutes 5001/tcp docker-api-1
dca4f37622bc langgenius/dify-plugin-daemon:0.0.6-local "/bin/bash -c /app/e…" 2 minutes ago Up 2 minutes 0.0.0.0:5003->5003/tcp, :::5003->5003/tcp docker-plugin_daemon-1
0d0f4cb537c3 langgenius/dify-web:1.1.3 "/bin/sh ./entrypoin…" 5 hours ago Up 2 minutes 3000/tcp docker-web-1
49c6fc2ef344 langgenius/dify-sandbox:0.2.11 "/main" 5 hours ago Up 2 minutes (healthy) docker-sandbox-1
f59502e8a3a2 postgres:15-alpine "docker-entrypoint.s…" 5 hours ago Up 2 minutes (healthy) 5432/tcp docker-db-1
5aa727dec5d1 ubuntu/squid:latest "sh -c 'cp /docker-e…" 5 hours ago Up 2 minutes 3128/tcp docker-ssrf_proxy-1
e76499e67c2c redis:6-alpine "docker-entrypoint.s…" 5 hours ago Up 2 minutes (healthy) 6379/tcp docker-redis-1
ae9da2cc6734 semitechnologies/weaviate:1.19.0 "/bin/weaviate --hos…" 5 hours ago Up 2 minutes docker-weaviate-1
访问 Dify 控制面板
前往开发机详情页,点击 Web 应用预览,点击弹窗中的跳转链接。
IMPORTANT
Web 应用预览链接仅在登录智算云平台账号后可用,因此不适用于对外发布应用服务。
使用 Dify 集成 GenStudio API
GenStudio 提供大语言模型、视觉模型、嵌入模型、重排序等多种预置模型 API 服务,欢迎使用。
获取 GenStudio API Key
您可以复制已有 API Key 或创建新的 Key。
预置模型 API 服务有 API 频率限制。企业级用户如使用预置模型,可联系无问芯穹调整限额。
配置 GenStudio API 服务
在 Dify 控制台,点击右上角头像,点击设置。
在左侧点击模型提供商,找到无问芯穹。
等待插件安装完成后,为插件配置 GenStudio API Key。
在 Dify 系统模型设置中配置 GenStudio 提供的模型。
参考资源
- 接入 GenStudio LLM API
- 科学安装 Ollama: 如果需要在同一台开发机上安装和访问 Ollama,请注意通过
OLLAMA_HOST
环境变量将 Ollama 服务绑定至0.0.0.0
。请注意通过OLLAMA_ORIGINS
环境变量允许跨域访问。