夜雨聆风学习资料网

ARTICLE · 1214355

软件离线部署前提:从镜像打包到导入的完整流程

软件离线部署前提:从镜像打包到导入的完整流程

在客户的内网或离线环境中部署服务,最麻烦的往往不是安装本身,而是介质怎么带进去。笔者这次部署 DataClaw,就经历了下载、压缩、传输、导入几个环节,这里把过程整理出来,供遇到类似场景的读者参考。

01 | 先在有网环境准备介质

离线部署的第一步,是在有网络的环境里把需要的东西全部下载好。笔者这次准备了两类介质。

第一类是前后端 Docker 镜像,体积有几 G:

podman pull ghcr.io/hysunhe/dataclaw:v3.2.6
podman pull ghcr.io/hysunhe/dataclaw-ui:v3.2.6

第二类是源码包 DataClaw-3.2.6.tar.gz,体积几十 M。它主要用于执行一些数据库脚本,不能漏掉。

02 | 压缩打包,减少传输体积

介质准备好后,为什么不直接传原始镜像?因为网络传输要经过多个中转站,体积越大,耗时和流量成本越高。

笔者采用的做法是先 save再 gzip压缩,压缩后体积大约为原来的 1/2~1/3(具体比例取决于镜像内容),这样能节省大量网络流量,也减少多次传输的时间,整体更划算。

# 压缩打包 UI 镜像
podman save ghcr.io/hysunhe/dataclaw-ui:v3.2.6 | gzip > dataclaw-ui-v3.2.6.tar.gz

# 压缩打包后端镜像
podman save ghcr.io/hysunhe/dataclaw:v3.2.6 | gzip > dataclaw-v3.2.6.tar.gz

这里用 podman save把镜像导出成归档文件,再通过管道交给 gzip压缩,最终得到两个 .tar.gz文件。需要注意:podman save只能导出 Podman 本地镜像库中的镜像,若前面是用 docker pull拉取的,需改用 docker save,或先确认 Podman 与 Docker 使用同一镜像存储,否则会提示镜像不存在。

03 | 传入离线环境并导入

压缩包准备好后,通过各种方式上传到客户的离线环境。到达目标机器后,用 podman load把镜像重新导入:

podman load -i dataclaw-ui-v3.2.6.tar.gz
podman load -i dataclaw-v3.2.6.tar.gz

-i指定输入文件,podman load会自动识别压缩格式并完成导入。导入完成后,可用下面的命令确认镜像和标签是否已进入本地镜像库:

podman images | grep dataclaw

确认前后端镜像都存在后,再按正常流程启动服务。

04 | 小结

回顾整个流程,关键点有三个:一是在有网环境把镜像和源码包都备齐;二是用 save + gzip压缩,降低传输成本;三是在离线环境用 load恢复镜像。顺序清晰,按步骤执行并确认每步结果,离线部署就不会手忙脚乱。


关注我,和AI一起成长~

相关学习资料