Dify离线部署方案
- 1. 本地拉取对应架构镜像
-
- 1.1 本地Docker安装
- 1.2 镜像拉取
- 1.3 镜像打包
- 1.4 源码下载
- 2. 服务器端部署
-
- 2.1 文件传输
- 2.2 Dify依赖加载
- 2.3 启动 Dify
服务器为Arm架构的华为昇腾AI服务器
1. 本地拉取对应架构镜像
本地环境:cat /etc/os-release
PRETTY_NAME="UOS Desktop 20 Pro"
NAME="uos"
VERSION_ID="20"
VERSION="20"
ID=uos
HOME_URL="https://www.chinauos.com/"
BUG_REPORT_URL="http://bbs.chinauos.com"
1.1 本地Docker安装
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装必要的依赖包
sudo apt install apt-transport-https ca-certificates curl software-properties-common
# 添加Docker的官方GPG密钥
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add –
# 设置 Docker 的软件源
echo \\
"deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \\
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# 启动 Docker 并设置为开机启动(如需要)
sudo systemctl start docker
sudo systemctl enable docker
Docker安装验证:
docker –version
docker info
1.2 镜像拉取
Dify所需镜像依赖(images):
langgenius/dify-web 0.15.3
langgenius/dify-api 0.15.3
langgenius/dify-sandbox 0.2.10
postgres 15-alpine
node 20-alpine3.20
python 3.12-slim-bookworm
redis 6-alpine
ubuntu/squid latest
semitechnologies/weaviate 1.19.0
nginx latest
docker pull –platform linux/arm64 langgenius/dify-web:0.15.3
docker pull –platform linux/arm64 <images>
- 出现问题与解决方式:
# 报错1
"–platform" is only supported on a Docker daemon with experimental features enabled
# 检查是否开启experimental功能
docker info | grep -i 'experimental'
#
vim /etc/docker/daemon.json
# Add 并保存
{
"experimental": true
}
# 报错2
Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
# 修改daemon.json 增加国内源
{
"registry-mirrors":[
"https://9cpn8tt6.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"https://mirror.ccs.tencentyun.com",
"https://docker.1panel.live",
"https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://your_preferred_mirror",
"https://dockerhub.icu",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
- 最终 Daemon.json
{
"dns": [
"8.8.8.8",
"8.8.4.4"
],
"experimental": true,
"registry-mirrors": [
"https://9cpn8tt6.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"https://mirror.ccs.tencentyun.com",
"https://docker.1panel.live",
"https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://your_preferred_mirror",
"https://dockerhub.icu",
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
],
}
重启Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
1.3 镜像打包
# 确认好该image是arm64架构
docker inspect langgenius/dify-web:0.15.3 | grep Architecture
# 打包输出为tar文件
docker save langgenius/dify-web:0.15.3 -o /home/Cyan/dify/dify_web.tar
docker save langgenius/dify-api:0.15.3 -o /home/Cyan/dify/dify_api.tar
# 将所有镜像依次打包
docker save <image_name>:<image_version> -o <save_path>
# 分片传输 (如需要)
split -b 100M dify.tar dify_part_
# dify文件夹下包含dify_web.tar, dify_api.tar等Docker镜像包
# 打包dify
tar -cvf dify.tar dify/
1.4 源码下载
假设所需版本为 0.15.3
git clone https://github.com/langgenius/dify.git –branch 0.15.3
或手动从 https://github.com/langgenius/dify/releases 下载所需版本
dify-0.15.3.tar.gz
2. 服务器端部署
2.1 文件传输
- 将打包好的镜像传入所需的服务器中(SFTP方式)[过程略][SSO+FileZilla]
- 将打包好的镜像传入所需的服务器中(SCP方式)
# 传输至服务器 | 回车后键入密码
scp dify.tar root@remote_host:/remote/path/
scp dify-0.15.3.tar.gz root@remote_host:/remote/path/
# 解包dify
tar -xvf dify.tar
# 解包dify源码
tar -xzvf dify-0.15.3.tar.gz
2.2 Dify依赖加载
- 加载Docker镜像(Dify依赖)
cd dify
docker load -i dify_web_xxxx.tar.gz
docker load -i dify_web_xxxx.tar.gz
docker load -i dify_web_xxxx.tar.gz
docker compose ps
# or
docker-compose ps
- 缺少Docker Compose环境的解决方法:
# 注:docker-compose-linux-aarch64根据Docker部署的系统决定
# 1.在线环境下
wget https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-aarch64 -O /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 2.离线环境下
# 下载好文件 docker-compose-linux-aarch64
cp docker-compose-linux-aarch64 /usr/local/bin
cd /usr/local/bin
mv docker-compose-linux-aarch64 docker-compose
# 检查安装是否成功
docker-compose –version
2.3 启动 Dify
- 启动容器:
tar -xzvf dify-0.15.3.tar.gz
# 进入Dify源代码的Docker目录
cd dify-0.15.3/docker/
# 复制环境配置文件
cp .env.example .env
# 启动 Docker 容器
docker-compose up -d
- 部署正常输出:
[+] Running 11/11
✔ Network docker_ssrf_proxy_network Created 0.1s
✔ Network docker_default Created 0.0s
✔ Container docker-redis-1 Started 2.4s
✔ Container docker-ssrf_proxy-1 Started 2.8s
✔ Container docker-sandbox-1 Started 2.7s
✔ Container docker-web-1 Started 2.7s
✔ Container docker-weaviate-1 Started 2.4s
✔ Container docker-db-1 Started 2.7s
✔ Container docker-api-1 Started 6.5s
✔ Container docker-worker-1 Started 6.4s
✔ Container docker-nginx-1 Started 7.1s
- Docker 容器启动问题: 若存在Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers),检查docker images中的tags与dify-0.15.3/docker/中的docker-compose.yaml里的images名称是否匹配,如不匹配则需找到对应的Docker依赖镜像,执行如下命令:
# 修改镜像Tag
docker tag [Hash] image_name:image_version
# 例:docker tag f5d091 langgenius/dify-web:0.15.3
# 再运行docker-compose up -d即可
评论前必须登录!
注册