现在很多项目会使用 docker 部署,我最常用的 docker 项目是 uptime-kuma 和 umami。之前运行亚马逊云 AWS 的 light sail 上,三个月的试用期马上就到了,前几天发现谷歌云长期免费服务器,每月200GB流量也够折腾。所以打算把 uptime-kuma 这个 docker 项目迁移到谷歌云上,迁移和备份过程如下:
1、提取原主机 uptime-kuma 的数据文件
得益于之前部署 uptime-kuma 项目的时候将项目的数据文件挂载到宿主机目录,所以提取数据文件很简单。以下是原 docker-compose.yml 文件内容:
代码登录后可见
可看出之前已将 /app/data 中的数据挂载到宿主机的 ./uptime-kuma 目录中,这就方便了,来到项目目录路径 /uptime-kuma 下,执行如下代码,进行压缩,取名为backup.tar.gz。
代码登录后可见
2、将提取的数据文件转移至新主机,部署项目
将步骤1中的备份文件通过 FTP 或 SCP 传到新主机,这次为了以后迁移更加方便,直接将项目部署在 /var/docker/uptime-kuma 目录,参考如下 docker-compose.yml 文件内容:
代码登录后可见
所以要提前创建 /var/docker/uptime-kuma 目录,同时将备份的压缩文件上传到该目录下。
代码登录后可见
操作完成后,在 /var/docker/uptime-kuma 目录下直接运行:
代码登录后可见
完成项目部署,直接在浏览器打开http://ip+端口3001,如果恢复的成功,则是直接登录的窗口,如失败,会是让你创建账号的窗口。这点可以判断是否恢复成功。
3、备份到电报群组
提前准备好电报机器人的API和频道ID,然后按如下操作:
在 /var/docker/uptime-kuma 目录下创建 backup.sh 脚本
代码登录后可见
拷贝以下脚本内容到 backup.sh 文件中:
代码登录后可见
给 backup.sh 添加执行权限:
代码登录后可见
然后在当前目录执行如下命令:
代码登录后可见
此时,如果电报群组中收到了备份文件,则说明成功,否则,再仔细检查一下,是否哪里出了问题。
既然手动执行可行,那么我们完全可以加入到系统自动执行命令中,我们输入:
代码登录后可见
首次执行,会要求选择编辑器,我习惯了 nano,直接选择1即可。
之后,我们在打开的文件中添加:
代码登录后可见
这句代码的意思是在每天早上八点会自动执行该脚本,如果担心哪里有误,可以先将时间改为测试的下一分钟,看是否执行成功,然后再改为一个固定的时间点。