Docker Hub 根据 GitHub Tags 自动构建带版本号镜像

自从去年买了一个蜗牛矿渣当作 NAS 开始,我就在折腾 NAS 这条路上越走越远。在 NAS上折腾软件和服务最方便的就是通过 docker 部署。所以能找到 docker 镜像的软件,我绝对不会自己折腾安装过程。当然有些时候没有办法找到现成的 docker 镜像,那就自己动手构建镜像。

众所周知,我们可以通过 Docker Hub 的自动化构建存放在 GitHub 上某个 branch 的代码。每当我们 git push 代码到 GitHub 就会触发一次 Docker Hub 构建一个新版本。

但是我最近发现一个问题,就是每次构建出来的镜像都是 latest 版本,没有留下历史版本的镜像,这就很不方便。比如我新构建的镜像有问题,但是没办法立刻回退到上一个版本的镜像,除非我把代码改回去再构建一次,这事儿听起来就很不科学。

当然 Docker Hub 也可以根据 GitHub 的特定 Tag 来自动构建镜像。难道我每次在 GitHub 创建一个新的 Tag 都要在 Docker Hub 上创建一条新的构建规则吗?这事儿听起来也挺蠢的。

有没有办法当我在 GitHub 创建一个任意版本号的 Tag 的时候,Docker Hub 这边都自动根据这个 Tag 的版本号,自动构建一个对应版本号的镜像呢?答案当然是有的,Docker Hub 的自动构建规则支持表达式匹配 Tag。

我们可以新增一条如下的自动构建规则:

Source TypeSourceDocker Tag
Tag/^v([0-9]+).([0-9]+).([0-9]+)$/{1}.{2}.{3}

然后当我们在 GitHub 创建一个 v0.1.1 的 Tag 之后, Docker Hub 会自动构建一个版本号为 0.1.1 的镜像。

这样我们自己构建的镜像库也能跟 MySQL 这种知名软件的镜像库一样,有一串各种版本号的镜像可用。当新版本的镜像出现的某些问题的时候,我们可以随时退回旧的镜像先用着,这下感觉舒服多了。

参考资料

添加新评论

已有 3 条评论

自己组装的话,功耗比较大,3--4个小时就要一度电。一天电费6度*0.5元。一天电费是3元 一个月100元。

要考虑到电费成本。降低了电费的成本才可以。

可以买个二手群晖玩,蜗牛的优点是省电,空间可以放2-3个硬盘。
但是他的可玩性不高。我也买过蜗牛。

乱步熊 乱步熊 回复 @沧州华菱电器

蜗牛性能确实差了点,但是作为NAS入门还是不错的。蜗牛性能现在跟不上我的需求了,接下来我打算买主板CPU机箱组NAS。群晖是很不错的,但是对我来说这个系统太封闭了,我还是希望能用原生的Linux,方便自己折腾。