引言
在企业的生产环境中,出于安全合规或网络限制的考虑,往往需要在离线环境中部署服务。接下来将以开源 AI 应用框架 Dify 为例,介绍如何通过 Docker 实现跨网络环境的离线部署,涵盖镜像打包、文件迁移、环境验证等全流程操作。
一、离线部署原理
通过 Docker 的 save/load 机制实现镜像的物理介质迁移,配合 Docker Compose 编排文件的环境适配能力,可在完全断网的环境中快速部署复杂应用。整个过程分为在线环境准备和离线环境还原两个阶段。
二、在线环境操作
1. 环境准备
- 在线环境:一台可以访问互联网的机器,安装好 Docker 和 Docker Compose。
- 离线环境:目标部署机器,安装好 Docker 和 Docker Compose。
# 验证 Docker 环境
docker --version && docker-compose --version
2. 在线环境:获取 Dify 资源
git clone https://github.com/langgenius/dify.git
cd dify/docker # 关键路径!
3. 拉取镜像(两种方式)
方式一:直接启动容器(自动下载)
docker-compose up -d # 自动拉取所有依赖镜像
方式二:显式拉取镜像(推荐)
docker-compose pull # 仅拉取镜像不启动容器
4. 镜像打包
# 查询所需镜像
docker images
# 多镜像打包(示例版本号以实际为准)
docker save -o dify_all.tar \
langgenius/dify-web:0.15.2 \
langgenius/dify-sandbox:0.2.10 \
postgres:13 \
redis:6.2
单镜像
将拉取的镜像保存为 tar 文件:
docker save -o myimage.tar myimage:tag
myimage.tar 是你想要创建的 tar 文件的名字,myimage:tag 是想要保存的镜像的名称和标签,tag 建议和 docker images 展示的 tag 保持一致。
举个例子:如果想保存一个名为 langgenius/dify-web、标签为 1.0.1 的镜像:
docker save -o dify_web.tar langgenius/dify-web:1.0.1
多镜像批量打包
如果想保存一个名为 langgenius/dify-web、标签为 1.0.1 的镜像和名为 langgenius/dify-sandbox、标签为 0.2.10 的镜像,以及其他所有的镜像:
docker save -o dify_all.tar langgenius/dify-web:1.0.1 langgenius/dify-sandbox:0.2.10 ...
这样可以把所有 Dify 依赖的镜像打到一个 dify_all.tar 的包里面。
5. 文件整理
从 Dify 的官方 GitHub 仓库下载 docker-compose.yml 文件:


