全网最新的Dify(1.7.2)私有化离线部署教程(ARM架构)
off999 2025-09-24 02:11 2 浏览 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’`,然后传入服务器、解压、修改配置、启动等。当然部署的过程中,肯定也不是一番风顺的,其中也包括了包的适配以及服务启动过程中遇到的问题。
关注我,下期我将针对部署过程中遇到的问题,进行展开讲解!
相关推荐
- Alist 玩家请进:一键部署全新分支 Openlist,看看香不香!
-
Openlist(其前身是鼎鼎大名的Alist)是一款功能强大的开源文件列表程序。它能像“万能钥匙”一样,解锁并聚合你散落在各处的云盘资源——无论是阿里云盘、百度网盘、GoogleDrive还是...
- 白嫖SSL证书还自动续签?这个开源工具让我告别手动部署
-
你还在手动部署SSL证书?你是不是也遇到过这些问题:每3个月续一次Let'sEncrypt证书,忘了就翻车;手动配置Nginx,重启服务,搞一次SSL得花一下午;付费证书太贵,...
- Docker Compose:让多容器应用一键起飞
-
CDockerCompose:让多容器应用一键起飞"曾经我也是一个手动启动容器的少年,直到我的膝盖中了一箭。"——某位忘记--link参数的运维工程师引言:容器化的烦恼与...
- 申请免费的SSL证书,到期一键续签
-
大家好,我是小悟。最近帮朋友配置网站HTTPS时发现,还有人对宝塔面板的SSL证书功能还不太熟悉。其实宝塔早就内置了免费的Let'sEncrypt证书申请和一键续签功能,操作简单到连新手都能...
- 飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
前面分享了两期TVGate:Q大的转发代理工具TVGate升级了,操作更便捷,增加了新的功能跨平台内网转发神器TVGate部署与使用初体验现在项目已经开源,并支持Docker部署,本文介绍如何通...
- Docker Compose 编排实战:一键部署多容器应用!
-
当项目变得越来越复杂,一个服务已经无法满足需求时,你可能需要同时部署数据库、后端服务、前端网页、缓存组件……这时,如果还一个一个手动dockerrun,简直是灾难这就是DockerCompo...
- 深度测评:Vue、React 一键部署的神器 PinMe
-
不知道大家有没有这种崩溃瞬间:领导突然要看项目Demo,客户临时要体验新功能,自己写的小案例想发朋友圈;找运维?排期?还要走工单;自己买服务器?域名、SSL、Nginx、防火墙;本地起服务?断电、关...
- 超简单!一键启动多容器,解锁 Docker Compose 极速编排秘籍
-
想要用最简单的方式在本地复刻一套完整的微服务环境?只需一个docker-compose.yml文件,你就能一键拉起N个容器,自动组网、挂载存储、环境隔离,全程无痛!下面这份终极指南,教你如何用...
- 日志文件转运工具Filebeat笔记_日志转发工具
-
一、概述与简介Filebeat是一个日志文件转运工具,在服务器上以轻量级代理的形式安装客户端后,Filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并将来自...
- K8s 日志高效查看神器,提升运维效率10倍!
-
通常情况下,在部署了K8S服务之后,为了更好地监控服务的运行情况,都会接入对应的日志系统来进行检测和分析,比如常见的Filebeat+ElasticSearch+Kibana这一套组合...
- 如何给网站添加 https_如何给网站添加证书
-
一、简介相信大家都知道https是更加安全的,特别是一些网站,有https的网站更能够让用户信任访问接下来以我的个人网站五岁小孩为例子,带大家一起从0到1配置网站https本次配置的...
- 10个Linux文件内容查看命令的实用示例
-
Linux文件内容查看命令30个实用示例详细介绍了10个Linux文件内容查看命令的30个实用示例,涵盖了从基本文本查看、分页浏览到二进制文件分析的各个方面。掌握这些命令帮助您:高效查看各种文本文件内...
- 第13章 工程化实践_第13章 工程化实践课
-
13.1ESLint+Prettier代码规范统一代码风格配置//.eslintrc.jsmodule.exports={root:true,env:{node...
- 龙建股份:工程项目中标_龙建股份有限公司招聘网
-
404NotFoundnginx/1.6.1【公告简述】2016年9月8日公告,公司于2016年9月6日收到苏丹共和国(简称“北苏丹”)喀土穆州基础设施与运输部公路、桥梁和排水公司出具的中标通知书...
- 福田汽车:获得政府补助_福田 补贴
-
404NotFoundnginx/1.6.1【公告简述】2016年9月1日公告,自2016年8月17日至今,公司共收到产业发展补助、支持资金等与收益相关的政府补助4笔,共计5429.08万元(不含...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 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)