在智算云平台上部署 Dify
Dify 是一个开源项目,旨在提供可视化编排生成式 AI 应用的专业工作站。该项目的 Github 仓库地址为:<https://github.com/langgenius/dify>,截止本教程最新版 tag 为 1.1.3。
信息
如果只需要了解在 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(
docker.io)拉取镜像(包括未指定 Registry 前缀和显式指定docker.io的命令),需要自行获取镜像并提前存入租户在平台的私有镜像仓库,或使用代理工具。
环境准备
创建一台开发机,要求如下:
- 推荐使用 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(docker.io)拉取镜像时会下载失败(包括未指定 Registry 前缀和显式指定 docker.io 或 registry-1.docker.io 的命令)。
警告
以下方案均需要您自行寻找代理工具,或第三方 Docker 镜像加速服务。智算云平台不提供此类服务。请务必解决镜像问题,否则无法继续执行后续步骤。
方案一 使用 Docker 服务代理工具
在有自备代理工具的情况下,该方案较为简便。本教程中采用方案一。
以 Clash 类工具为例,从第三方获取相关服务凭证后,可在 AIStudio 开发机中安装客户端。详见 第三方学术加速服务或代理工具。
在开发机中启动您的代理服务,假设您的本地 HTTP 代理服务运行在 127.0.0.1,端口为 7890。
为开发机 Docker 服务配置代理。
language-shell# 创建目录 mkdir -p /etc/docker # 创建 Docker 服务配置文件 touch /etc/docker/daemon.json在
/etc/docker/daemon.json写入如下内容:language-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,*.infini-ai.com" }, "registry-mirrors": ["https://<my-docker-mirror-host>"] }信息
建议在
no-proxy字段合理配置不需要通过代理访问的服务。使用 Dockerctl 重启 Docker 服务。
language-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 应用预览,点击弹窗中的跳转链接。
警告
Web 应用预览链接仅在登录智算云平台账号后可用,因此不适用于对外发布应用服务。
参考资源
- 在 Dify 中使用 GenStudio API
- 科学安装 Ollama:如果需要在同一台开发机上安装和访问 Ollama,请注意通过
OLLAMA_HOST环境变量将 Ollama 服务绑定至0.0.0.0。请注意通过OLLAMA_ORIGINS环境变量允许跨域访问。