Dify离线部署方案-以华为昇腾Arm架构服务器为例

打印 上一主题 下一主题

主题 2038|帖子 2038|积分 6114

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
服务器为Arm架构的华为昇腾AI服务器
  1. 当地拉取对应架构镜像

当地环境:cat /etc/os-release
  1. PRETTY_NAME="UOS Desktop 20 Pro"
  2. NAME="uos"
  3. VERSION_ID="20"
  4. VERSION="20"
  5. ID=uos
  6. HOME_URL="https://www.chinauos.com/"
  7. BUG_REPORT_URL="http://bbs.chinauos.com"
复制代码
1.1 当地Docker安装

  1. # 更新系统
  2. sudo apt update && sudo apt upgrade -y
  3. # 安装必要的依赖包
  4. sudo apt install apt-transport-https ca-certificates curl software-properties-common
  5. # 添加Docker的官方GPG密钥
  6. curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
  7. # 设置 Docker 的软件源
  8. echo \
  9.   "deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
  10.   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  11. # 安装 Docker Engine
  12. sudo apt-get update
  13. sudo apt-get install -y docker-ce docker-ce-cli containerd.io
  14. # 启动 Docker 并设置为开机启动(如需要)
  15. sudo systemctl start docker
  16. sudo systemctl enable docker
复制代码
Docker安装验证:
  1. docker --version
  2. docker info
复制代码
1.2 镜像拉取

Dify所需镜像依赖(images):
  1. langgenius/dify-web         0.15.3
  2. langgenius/dify-api         0.15.3
  3. langgenius/dify-sandbox     0.2.10
  4. postgres                    15-alpine
  5. node                        20-alpine3.20
  6. python                      3.12-slim-bookworm
  7. redis                       6-alpine
  8. ubuntu/squid                latest
  9. semitechnologies/weaviate   1.19.0
  10. nginx                       latest
复制代码
  1. docker pull --platform linux/arm64 langgenius/dify-web:0.15.3
  2. docker pull --platform linux/arm64 <images>
复制代码


  • 出现问题与办理方式:

  • “–platform” is only supported on a Docker daemon with experimental features enabled:
  1. # 报错1
  2. "--platform" is only supported on a Docker daemon with experimental features enabled
  3. # 检查是否开启experimental功能
  4. docker info | grep -i 'experimental'
  5. #
  6. vim /etc/docker/daemon.json
  7. # Add 并保存
  8. {
  9.   "experimental": true
  10. }
复制代码

  • Error response from daemon: Get “https://registry-1.docker.io/v2/”: context deadline exceeded (Client.Timeout exceeded while awaiting headers) :
  1. # 报错2
  2. Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
  3. # 修改daemon.json 增加国内源
  4. {
  5.         "registry-mirrors":[
  6.     "https://9cpn8tt6.mirror.aliyuncs.com",
  7.     "https://registry.docker-cn.com",
  8.     "https://mirror.ccs.tencentyun.com",
  9.     "https://docker.1panel.live",
  10.     "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
  11.     "https://docker.m.daocloud.io",
  12.     "https://hub-mirror.c.163.com",
  13.     "https://mirror.baidubce.com",
  14.     "https://your_preferred_mirror",
  15.     "https://dockerhub.icu",
  16.     "https://docker.registry.cyou",
  17.     "https://docker-cf.registry.cyou",
  18.     "https://dockercf.jsdelivr.fyi",
  19.     "https://docker.jsdelivr.fyi",
  20.     "https://dockertest.jsdelivr.fyi",
  21.     "https://mirror.aliyuncs.com",
  22.     "https://dockerproxy.com",
  23.     "https://mirror.baidubce.com",
  24.     "https://docker.m.daocloud.io",
  25.     "https://docker.nju.edu.cn",
  26.     "https://docker.mirrors.sjtug.sjtu.edu.cn",
  27.     "https://docker.mirrors.ustc.edu.cn",
  28.     "https://mirror.iscas.ac.cn",
  29.     "https://docker.rainbond.cc"
  30.     ]
  31. }
复制代码


  • 终极 Daemon.json
  1. {
  2.   "dns": [
  3.     "8.8.8.8",
  4.     "8.8.4.4"
  5.   ],
  6.   "experimental": true,
  7.   "registry-mirrors": [
  8.     "https://9cpn8tt6.mirror.aliyuncs.com",
  9.     "https://registry.docker-cn.com",
  10.     "https://mirror.ccs.tencentyun.com",
  11.     "https://docker.1panel.live",
  12.     "https://2a6bf1988cb6428c877f723ec7530dbc.mirror.swr.myhuaweicloud.com",
  13.     "https://docker.m.daocloud.io",
  14.     "https://hub-mirror.c.163.com",
  15.     "https://mirror.baidubce.com",
  16.     "https://your_preferred_mirror",
  17.     "https://dockerhub.icu",
  18.     "https://docker.registry.cyou",
  19.     "https://docker-cf.registry.cyou",
  20.     "https://dockercf.jsdelivr.fyi",
  21.     "https://docker.jsdelivr.fyi",
  22.     "https://dockertest.jsdelivr.fyi",
  23.     "https://mirror.aliyuncs.com",
  24.     "https://dockerproxy.com",
  25.     "https://mirror.baidubce.com",
  26.     "https://docker.m.daocloud.io",
  27.     "https://docker.nju.edu.cn",
  28.     "https://docker.mirrors.sjtug.sjtu.edu.cn",
  29.     "https://docker.mirrors.ustc.edu.cn",
  30.     "https://mirror.iscas.ac.cn",
  31.     "https://docker.rainbond.cc"
  32.    ],
  33. }
复制代码
重启Docker:
  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker
复制代码
1.3 镜像打包

  1. # 确认好该image是arm64架构
  2. docker inspect langgenius/dify-web:0.15.3 | grep Architecture
  3. # 打包输出为tar文件
  4. docker save langgenius/dify-web:0.15.3 -o /home/Cyan/dify/dify_web.tar
  5. docker save langgenius/dify-api:0.15.3 -o /home/Cyan/dify/dify_api.tar
  6. # 将所有镜像依次打包
  7. docker save <image_name>:<image_version> -o <save_path>
  8. # 分片传输 (如需要)
  9. split -b 100M dify.tar dify_part_
  10. # dify文件夹下包含dify_web.tar, dify_api.tar等Docker镜像包
  11. # 打包dify
  12. tar -cvf dify.tar dify/
复制代码
1.4 源码下载

假设所需版本为 0.15.3
  1. git clone https://github.com/langgenius/dify.git --branch 0.15.3
复制代码
或手动从 https://github.com/langgenius/dify/releases 下载所需版本
  1. dify-0.15.3.tar.gz
复制代码
2. 服务器端部署

2.1 文件传输



  • 将打包好的镜像传入所需的服务器中(SFTP方式)[过程略][SSO+FileZilla]
  • 将打包好的镜像传入所需的服务器中(SCP方式)
  1. # 传输至服务器 | 回车后键入暗码scp dify.tar root@remote_host:/remote/path/scp dify-0.15.3.tar.gz
  2. root@remote_host:/remote/path/# 解包difytar -xvf dify.tar# 解包dify源码tar -xzvf dify-0.15.3.tar.gz
复制代码
2.2 Dify依赖加载



  • 加载Docker镜像(Dify依赖)
  1. cd dify
  2. docker load -i dify_web_xxxx.tar.gz
  3. docker load -i dify_web_xxxx.tar.gz
  4. docker load -i dify_web_xxxx.tar.gz
  5. docker compose ps
  6. # or
  7. docker-compose ps
复制代码


  • 缺少Docker Compose环境的办理方法:
  1. # 注:docker-compose-linux-aarch64根据Docker部署的系统决定
  2. # 1.在线环境下
  3. wget https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-aarch64 -O /usr/local/bin/docker-compose
  4. chmod +x /usr/local/bin/docker-compose
  5. # 2.离线环境下
  6. # 下载好文件 docker-compose-linux-aarch64
  7. cp docker-compose-linux-aarch64 /usr/local/bin
  8. cd /usr/local/bin
  9. mv docker-compose-linux-aarch64 docker-compose
  10. # 检查安装是否成功
  11. docker-compose --version
复制代码
2.3 启动 Dify



  • 启动容器:
  1. tar -xzvf dify-0.15.3.tar.gz
  2. # 进入Dify源代码的Docker目录cd dify-0.15.3/docker/# 复制环境设置文件cp .env.example .env# 启动 Docker 容器docker-compose up -d
复制代码


  • 部署正常输出:
  1. [+] Running 11/11
  2. ✔ Network docker_ssrf_proxy_network  Created                                                                 0.1s
  3. ✔ Network docker_default             Created                                                                 0.0s
  4. ✔ Container docker-redis-1           Started                                                                 2.4s
  5. ✔ Container docker-ssrf_proxy-1      Started                                                                 2.8s
  6. ✔ Container docker-sandbox-1         Started                                                                 2.7s
  7. ✔ Container docker-web-1             Started                                                                 2.7s
  8. ✔ Container docker-weaviate-1        Started                                                                 2.4s
  9. ✔ Container docker-db-1              Started                                                                 2.7s
  10. ✔ Container docker-api-1             Started                                                                 6.5s
  11. ✔ Container docker-worker-1          Started                                                                 6.4s
  12. ✔ 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依赖镜像,执行如下命令:
  1. # 修改镜像Tag
  2. docker tag [Hash] image_name:image_version
  3. # 例:docker tag f5d091 langgenius/dify-web:0.15.3
  4. # 再运行docker-compose up -d即可
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表