整体思路
分两大阶段:
- 有外网机器(已装好 Dify):打包全部 Docker 镜像、Dify 源码、依赖离线包、环境配置;
- 内网离线机器:先部署 Docker/WSL2,导入镜像,解压源码,恢复配置,启动服务。
前提:两台机器系统一致(均 Win11)、CPU 架构一致(都是 x86_64,现在电脑基本满足)。
一、外网机器操作(打包离线资源)
1. 导出所有 Dify 相关 Docker 镜像
进入 dify/docker 目录,先查看所有运行镜像
powershell
docker compose up -d
docker compose images
方案 1:一键导出 compose 关联所有镜像(推荐)
powershell
# 直接输出所有镜像名 repo:tag,一行一个
docker compose config --images > image_list.txt
# 查看内容确认
Get-Content image_list.txt
执行后应该能看到类似下面内容
langgenius/dify-web:1.14.2
busybox:latest
langgenius/dify-api:1.14.2
langgenius/dify-api:1.14.2
langgenius/dify-plugin-daemon:0.6.1-local
nginx:latest
postgres:15-alpine
ubuntu/squid:latest
langgenius/dify-api:1.14.2
langgenius/dify-sandbox:0.2.15
redis:6-alpine
langgenius/dify-api:1.14.2
semitechnologies/weaviate:1.27.0
批量打包
# 批量打包为离线tar包
# 读取所有行转为数组
$imgs = Get-Content image_list.txt
# 一次性打包全部镜像到 dify_offline_images.tar
docker save -o dify_offline_images.tar @imgs
执行完成后目录出现 dify_offline_images.tar(大小约 6~10G)。
方案 2:单条导出(PowerShell 报错时用)
powershell
docker save langgenius/dify-web:latest -o web.tar
docker save langgenius/dify-api:latest -o api.tar
docker save langgenius/dify-worker:latest -o worker.tar
docker save postgres:15-alpine -o postgres.tar
docker save redis:6-alpine -o redis.tar
docker save nginx:alpine -o nginx.tar
2. 打包完整 Dify 源码目录
把整个 dify 文件夹完整复制,包含:
- docker-compose.yml
- .env 配置文件(你的账号、端口、模型配置都在这里)
- .env.example、nginx 配置、插件目录等
不要只复制 docker 子文件夹,完整根目录带走。
3. 导出数据库数据(必须!否则内网部署后知识库、应用全部丢失)
两种备份方式任选其一
方式 A:docker compose 导出 PostgreSQL 数据库
在 dify/docker 执行:
powershell
ocker compose exec db_postgres pg_dump -U postgres dify > dify_backup.sql
生成 dify_backup.sql,是全部业务数据离线备份文件。
方式 B:打包数据卷(最简单,完整迁移)
查看数据卷名称
powershell
docker volume ls
找到类似 docker_dify-db-data、docker_dify-redis-data 的卷,导出卷备份:
powershell
# 备份数据库卷
docker run --rm `
-v docker_dify-redis-data:/source `
-v ${PWD}:/backup `
alpine tar -czvf /backup/redis_volume.tar.gz -C /source .
# 备份redis缓存卷
docker run --rm `
-v docker_dify-db-data:/source `
-v ${PWD}:/backup `
alpine tar -czvf /backup/db_volume.tar.gz -C /source .
4. 收集 Docker Desktop 离线安装包
内网机器不能联网,需要提前下载安装程序:
- Docker Desktop 离线安装包:
Docker Desktop Installer.exe - WSL2 Linux 内核更新包:wsl_update_x64.msi
- 可选:Git 安装包(内网如需修改源码备用)
5. 统一整理所有离线文件,拷贝到 U 盘 / 移动硬盘
目录结构示例:
plaintext
dify_offline_package/
├─ Docker安装依赖/
│ ├─ Docker Desktop Installer.exe
│ └─ wsl_update_x64.msi
├─ dify/ # 完整dify源码文件夹
├─ dify_offline_images.tar # 全部docker镜像包
├─ dify_backup.sql # 数据库SQL备份
├─ db_volume.tar.gz # 数据库卷备份(二选一)
└─ redis_volume.tar.gz # Redis卷备份
二、内网离线 Win11 机器部署步骤(全程断网)
步骤 1:离线安装 WSL2、虚拟机平台(无需联网)
- 以管理员打开 PowerShell,执行开启功能(Windows 自带,不用网)
powershell
wsl --install
- 双击离线包
wsl_update_x64.msi安装 WSL 内核 - 重启电脑
步骤 2:离线安装 Docker Desktop
- 双击
Docker Desktop Installer.exe,勾选 WSL2 后端安装 - 安装完成后启动 Docker(此时无网络,忽略联网登录弹窗,关掉即可)
- 打开 Docker 设置,和外网机器配置保持一致:分配内存、WSL 集成
步骤 3:导入离线 Docker 镜像
把 U 盘里的 dify_offline_images.tar 复制到内网机器无中文路径,PowerShell 进入该目录执行导入:
powershell
docker load -i dify_offline_images.tar
等待导入完成,执行 docker images 验证所有镜像已存在。
步骤 4:恢复 Dify 源码与配置
- 将完整
dify文件夹复制到内网机器(路径和外网尽量一致,如 D:\dify) - 进入
dify/docker,检查.env文件:- 端口、域名根据内网 IP 按需修改
- 不需要联网的模型(本地 Ollama)保留配置;云端 API Key 可清空
步骤 5:恢复业务数据(二选一,卷恢复更简单)
方案 A:数据卷恢复(推荐,完全保留原环境)
- 先临时启动一次容器创建空卷
powershell
cd D:\dify\docker
docker compose up -d db_postgres redis
- 停止数据库、redis 容器
powershell
docker compose stop db_postgres redis
- 覆盖恢复数据库卷
powershell
docker run --rm -v docker_dify-db-data:/target -v ${PWD}:/backup alpine tar -xzvf /backup/db_volume.tar.gz -C /target
docker run --rm -v docker_dify-redis-data:/target -v ${PWD}:/backup alpine tar -xzvf /backup/redis_volume.tar.gz -C /target
方案 B:SQL 文件导入(全新空卷导入数据)
- 启动postgres服务
powershell
docker compose up -d db_postgres
- 2.删除当前的dify数据库(因为之前备份是全量备份的,有很多创建表的操作,会提示冲突),然后创建dify数据库
-
DROP DATABASE IF EXISTS dify; CREATE DATABASE dify; \q - 执行 SQL 恢复
powershell
cat dify_backup.sql | docker compose exec -T db_postgres psql -U postgres dify
步骤 6:启动 Dify 离线服务
powershell
cd D:\dify\docker
docker compose up -d
查看容器状态 docker compose ps,全部 Up 即为成功。 浏览器访问 http://localhost 或内网 IP,原有应用、知识库、模型配置全部保留。
三、关键补充:如果内网需要本地大模型(Ollama 离线配套)
若 Dify 对接本地 Ollama,额外在外网机器导出 ollama 镜像与模型文件:
- 导出 ollama 镜像
docker save ollama/ollama -o ollama.tar - 复制 Ollama 模型目录
C:\Users\你的用户名\.ollama\models完整离线拷贝到内网对应路径 - 内网导入 ollama 镜像,无需重新下载模型
四、离线迁移避坑要点
- 禁止修改源码目录层级,否则 docker-compose 挂载路径失效;
- 内网机器不能联网,Docker 无需登录账号,不影响本地镜像运行;
- 迁移前外网机器建议执行
docker compose down停止服务再备份,避免数据损坏; - 两台机器 CPU 架构必须相同,不支持 x86 与 ARM 跨架构迁移;
- 若内网有防火墙,放行 Nginx 端口(默认 80),其他电脑可通过内网 IP 访问;
- 不要删除
.env文件,所有模型密钥、存储配置都存在这里。
2026.06测试有效&spm=1001.2101.3001.5002&articleId=162187716&d=1&t=3&u=57eaa783365f490491e572266d3478f7)
1万+

被折叠的 条评论
为什么被折叠?



