全网最新的Dify(1.7.2)私有化离线部署教程(ARM架构)
off999 2025-09-24 02:11 35 浏览 0 评论
Hello,大家好!近期工作中有涉及到Dify私有化离线部署,特别是针对于一些国产设备。因此特别整理了该教程,实测有效!有需要的小伙伴可以参考下!
本文主要针对Dify1.7.2最新版本 + 国产操作系统环境进行 离线部署,通过本地以及服务器`线上、线下`操作,对ARM架构操作系统进行全面的适配,满足政企私有化部署的需要。
Dify是一个强大的开源大模型应用开发平台,目前版本也在不断地持续迭代中。目前针对Dify的部署,一般在线部署会更加容易一些,但是对于特定的一些场景、特别的需求,需要进行私有化、本地化离线部署,还是存在一定的难度。今天就针对国产环境,对Dify最新版本进行整体的部署。
一、本地操作
- 离线下载dify最新版本的包
从github上下载**dify1.7.2**最新版的安装包。
Github地址:[
https://github.com/langgenius/dify/releases/]
- windows本机环境检测及安装。
检查本机电脑是否安装Docker以及Docker Compose。建议直接下载安装`docker-desktop`,其包含`Docker`和`Docker Compose`。
# 打开cmd,输入 以下命令:
docker -v
Docker version 28.3.2, build 578ccf6
docker-compose -v
Docker Compose version v2.38.2-desktop.1官方下载地址:[
https://www.docker.com/products/docker-desktop/]
- 离线拉取Dify相应的ARM镜像
(1)在本地目录创建一个新的`docker-compose.yam`配置文件,用于下载Dify相关arm架构的镜像,其中主要包括:dify-api、dify-web等核心组件,直接拷贝以下内容即可!
```bash
services:
# The nginx reverse proxy.
# used for reverse proxying the API service and Web service.
nginx:
image: nginx:latest
platform: arm6
# API service
api:
image: langgenius/dify-api:1.7.2
platform: arm64
# worker service
# The Celery worker for processing the queue.
worker:
image: langgenius/dify-api:1.7.2
platform: arm64
# Frontend web application.
web:
image: langgenius/dify-web:1.7.2
platform: arm64
# The postgres database.
db:
image: postgres:15-alpine
platform: arm64
# The DifySandbox
sandbox:
image: langgenius/dify-sandbox:0.2.12
platform: arm64
# The Weaviate vector store.
weaviate:
image: semitechnologies/weaviate:1.19.0
platform: arm64
plugin_daemon:
image: langgenius/dify-plugin-daemon:0.2.0-local
platform: arm64
ssrf_proxy:
image: ubuntu/squid:latest
platform: arm64
certbot:
image: certbot/certbot
platform: arm64
pgvector:
image: pgvector/pgvector:pg16
platform: arm64
minio:
container_name: milvus-minio
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
platform: arm64
milvus-standalone:
container_name: milvus-standalone
image: milvusdb/milvus:v2.5.0-beta
platform: arm64
opensearch:
container_name: opensearch
image: opensearchproject/opensearch:latest
platform: arm64
redis:
container_name: redis
image: redis:7.2.4
platform: arm64
```(2)采用`docker-compose pull`离线下载Dify相关依赖镜像,大约需要下载半个小时。
```bash
# 拉取镜像
docker-compose pull
# 查看镜像
docker images
```下载镜像:
(3)下载完成之后,采用上述命令` docker images` 查看下载后的镜像是否完整。
要注意检查镜像的系统架构,有可能不是ARM架构的。通过 `'docker inspect 镜像名称|findstr Architecture`进行检查,是否为`ARM`架构。
```bash
(base) PS C:\Users\76539> docker inspect 46312be3b2c3|findstr Architecture
"Architecture": "arm64",
```- 打包镜像上传至服务器。
支持`批量`和`单独打包`两种方式,为保险起见,该文采用的是`单独`打包方式。
(1) 批量打包:将所有的镜像一次性的打包到一个文件中。例如:`all_images.tar`
```bash
docker save \
langgenius/dify-web:1.7.2 --platform=linux/arm64 \
langgenius/dify-api:1.7.2 --platform=linux/arm64 \
langgenius/dify-plugin-daemon:0.2.0-local --platform=linux/arm64 \
nginx:latest --platform=linux/arm64 \
ubuntu/squid:latest --platform=linux/arm64 \
certbot/certbot:latest --platform=linux/arm64 \
langgenius/dify-sandbox:0.2.12 --platform=linux/arm64 \
pgvector/pgvector:pg16 --platform=linux/arm64 \
postgres:15-alpine --platform=linux/arm64 \
milvusdb/milvus:v2.5.0-beta --platform=linux/arm64 \
semitechnologies/weaviate:1.19.0 --platform=linux/arm64 \
minio/minio:RELEASE.2023-03-20T20-16-18Z --platform=linux/arm64 \
opensearchproject/opensearch:latest --platform=linux/arm64 \
quay.io/coreos/etcd:v3.5.5 --platform=linux/arm64 \
redis:7.2.4 --platform=linux/arm64 \
-o all_images.tar
```(2)单个打包命令`docker save -o xxx.tar 原始镜像名称:版本号 --platform=linux/arm64 `
```bash
# 批量打包下载到本地
docker save -o dify-web172.tar langgenius/dify-web:1.7.2 --platform=linux/arm64
docker save -o dify-api172.tar langgenius/dify-api:1.7.2 --platform=linux/arm64
docker save -o dify-plugin-daemon.tar langgenius/dify-plugin-daemon:0.2.0-local --platform=linux/arm64
docker save -o nginx.tar nginx:latest --platform=linux/arm64
docker save -o squid.tar ubuntu/squid:latest --platform=linux/arm64
docker save -o certbot.tar certbot/certbot:latest --platform=linux/arm64
docker save -o dify-sandbox.tar langgenius/dify-sandbox:0.2.12 --platform=linux/arm64
docker save -o pgvector.tar pgvector/pgvector:pg16 --platform=linux/arm64
docker save -o postgres.tar postgres:15-alpine --platform=linux/arm64
docker save -o milvus.tar milvusdb/milvus:v2.5.0-beta --platform=linux/arm64
docker save -o weaviate.tar semitechnologies/weaviate:1.19.0 --platform=linux/arm64
docker save -o minio.tar minio/minio:RELEASE.2023-03-20T20-16-18Z --platform=linux/arm64
docker save -o opensearch.tar opensearchproject/opensearch:latest --platform=linux/arm64
docker save -o etcd.tar quay.io/coreos/etcd:v3.5.5 --platform=linux/arm64
docker save -o redis.tar redis:7.2.4 --platform=linux/arm64
```(3)将tar镜像包从本地传至服务器。
二、服务器操作
- 服务器环境检查以及 解压images tar文件。
(1)检查服务器docker 以及docker-compose版本,没有环境的可以自行安装。
// 输入docker 命令
# 检查docker
docker -v
Docker version 28.3.3, build 980b856
# 检查docker-compose
docker-compose -v
Docker Compose version v2.33.1(2)解压上传的images tar包。
```bash
root@test-PC:/work/dify-images# ls -l
total 7352568
-rw-r--r-- 1 root root 90970624 Aug 12 14:08 certbot.tar
-rw-r--r-- 1 root root 1395456000 Aug 12 14:51 dify-api172.tar
-rw-r--r-- 1 root root 987888640 Aug 12 14:20 dify-plugin-daemon.tar
-rw-r--r-- 1 root root 376519168 Aug 12 14:34 dify-sandbox.tar
-rw-r--r-- 1 root root 357552128 Aug 12 14:47 dify-web172.tar
-rw-r--r-- 1 root root 145932800 Aug 12 14:30 etcd.tar
-rw-r--r-- 1 root root 1252281856 Aug 12 14:22 milvus.tar
-rw-r--r-- 1 root root 199900672 Aug 12 14:50 minio.tar
-rw-r--r-- 1 root root 140978176 Aug 12 14:24 nginx.tar
-rw-r--r-- 1 root root 1874550272 Aug 12 14:43 opensearch.tar
-rw-r--r-- 1 root root 310468096 Aug 12 14:28 pgvector.tar
-rw-r--r-- 1 root root 213669376 Aug 12 14:52 postgres.tar
-rw-r--r-- 1 root root 144076800 Aug 12 14:53 squid.tar
-rw-r--r-- 1 root root 38720512 Aug 12 14:53 weaviate.tar
```针对上述包,依次进行解压即可。`输入命令:docker load -i xxxx.tar`
```bash
# 以 certbot为例
root@test-PC:/work/dify-images# docker load -i certbot.tar
994456c4fd7b: Loading layer [==================================================>] 3.627MB/3.627MB
742e38c37a3d: Loading layer [==================================================>] 459.8kB/459.8kB
7b7e15815a1d: Loading layer [==================================================>] 13.55MB/13.55MB
dbb969ba5eaf: Loading layer [==================================================>] 249B/249B
b049911687c7: Loading layer [==================================================>] 113B/113B
84548760d4f4: Loading layer [==================================================>] 38.67kB/38.67kB
eb744668f70e: Loading layer [==================================================>] 32.08kB/32.08kB
ad53d46c6418: Loading layer [==================================================>] 94.13kB/94.13kB
a09c21b51e5a: Loading layer [==================================================>] 434.7kB/434.7kB
01d2240e864a: Loading layer [==================================================>] 7.424MB/7.424MB
c194e2b50c30: Loading layer [==================================================>] 19.29MB/19.29MB
Loaded image: certbot/certbot:latest
```- 配置源码中的docker-compose.yaml
路径:
/work/dify-source/dify-1.7.2/docker
由于在Dify的官方源码中提供了很多的`vertor database`向量数据库,在实际的使用过程中我们可能用不到,如果直接按照官方配置启动,则可能会占用额外的存储空间或者其他未知的报错,因此我们要对其进行删减。只保留了主要的一些配置和`pgvector、Milvus`等向量数据。
代码如下(示例):
```yaml
pgvector:
image: pgvector/pgvector:pg16
profiles:
- pgvector
restart: always
environment:
PGUSER: ${PGVECTOR_PGUSER:-postgres}
# The password for the default postgres user.
POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456}
# The name of the default postgres database.
POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify}
# postgres data directory
PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata}
# pg_bigm module for full text search
PG_BIGM: ${PGVECTOR_PG_BIGM:-false}
PG_BIGM_VERSION: ${PGVECTOR_PG_BIGM_VERSION:-1.2-20240606}
volumes:
- ./volumes/pgvector/data:/var/lib/postgresql/data
- ./pgvector/docker-entrypoint.sh:/docker-entrypoint.sh
entrypoint: [ '/docker-entrypoint.sh' ]
healthcheck:
test: [ 'CMD', 'pg_isready' ]
interval: 1s
timeout: 3s
retries: 30
# Milvus vector database services
etcd:
container_name: milvus-etcd
image: quay.io/coreos/etcd:v3.5.5
profiles:
- milvus
environment:
ETCD_AUTO_COMPACTION_MODE: ${ETCD_AUTO_COMPACTION_MODE:-revision}
ETCD_AUTO_COMPACTION_RETENTION: ${ETCD_AUTO_COMPACTION_RETENTION:-1000}
ETCD_QUOTA_BACKEND_BYTES: ${ETCD_QUOTA_BACKEND_BYTES:-4294967296}
ETCD_SNAPSHOT_COUNT: ${ETCD_SNAPSHOT_COUNT:-50000}
volumes:
- ./volumes/milvus/etcd:/etcd
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
healthcheck:
test: [ 'CMD', 'etcdctl', 'endpoint', 'health' ]
interval: 30s
timeout: 20s
retries: 3
networks:
- milvus
minio:
container_name: milvus-minio
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
profiles:
- milvus
environment:
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin}
volumes:
- ./volumes/milvus/minio:/minio_data
command: minio server /minio_data --console-address ":9001"
healthcheck:
test: [ 'CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live' ]
interval: 30s
timeout: 20s
retries: 3
networks:
- milvus
milvus-standalone:
container_name: milvus-standalone
image: milvusdb/milvus:v2.5.15
profiles:
- milvus
command: [ 'milvus', 'run', 'standalone' ]
environment:
ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379}
MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000}
common.security.authorizationEnabled: ${MILVUS_AUTHORIZATION_ENABLED:-true}
volumes:
- ./volumes/milvus/milvus:/var/lib/milvus
healthcheck:
test: [ 'CMD', 'curl', '-f', 'http://localhost:9091/healthz' ]
interval: 30s
start_period: 90s
timeout: 20s
retries: 3
depends_on:
- etcd
- minio
ports:
- 19530:19530
- 9091:9091
networks:
- milvus
```- 启动Dify所有的服务以及查看状态:
(1)输入:`docker-compose up -d`
```bash
docker-compose up -d
```(2) 通过`docker-compose ps -a ` 查看dify服务启动状态:
**常用命令:**
```bash
# 必须要在docker-compose.yaml所在的目录
# 启动命令
docker-compose up -d
# 关闭命令:
docker-compose down
# 查看所有服务运行状态:
docker-compose ps -a
### 查看报错的命令,比如在启动的过程中,有哪个容器没有起来。可以通过docker logs进行查看
docker logs 容器名称
```(3)服务完全启动之后,可以在浏览器输入ip地址进行愉快的访问和自由的玩耍啦!
三、总结
整篇文章的主要逻辑,就是 现在本地把Dify所需要的依赖包都下载下来`‘对应操作系统的版本ARM’`,然后传入服务器、解压、修改配置、启动等。当然部署的过程中,肯定也不是一番风顺的,其中也包括了包的适配以及服务启动过程中遇到的问题。
关注我,下期我将针对部署过程中遇到的问题,进行展开讲解!
相关推荐
- 安全教育登录入口平台(安全教育登录入口平台官网)
-
122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...
- 大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)
-
大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...
-
- 哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
-
要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...
-
2026-02-04 09:03 off999
- 电信宽带测速官网入口(电信宽带测速官网入口app)
-
这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...
- 植物大战僵尸95版手机下载(植物大战僵尸95 版下载)
-
1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...
- 免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)
-
1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...
- 2025世界杯赛程表(2025世界杯在哪个国家)
-
2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...
- 下载搜狐视频电视剧(搜狐电视剧下载安装)
-
搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...
- 永久免费听歌网站(丫丫音乐网)
-
可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...
- 音乐格式转换mp3软件(音乐格式转换器免费版)
-
有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...
- 电子书txt下载(免费的最全的小说阅读器)
-
1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...
- 最好免费观看高清电影(播放免费的最好看的电影)
-
在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...
- 孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)
-
要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
