标记Docker Hub版本的最佳做法是什么

时间:2016-07-03 18:16:35

标签: git github docker dockerhub

我有一个运行应用程序的Docker Hub容器。通常它将通过克隆源git repo来运行应用程序,但是在我想要运行特定版本的情况下,应用程序已经标记了各种版本。例如,我可以做一个

git clone https://github.com/author/application.git
git checkout release-1.0.0

作为Docker Hub的维护者,我想用容器镜像软件的版本。除了在发布版本时手动执行它还有其他选择吗?

现在我的Dockerfile包含这样的内容:

ENV APP_VER=2.0.0
RUN git clone ...; git checkout ${APP_VER}

在这个例子中,我会保留一个docker文件的标记分支,将APP_VER设置为2.1.0,然后Docker Hub支持,但是如果我对repo进行了更改,那我就不清楚我是怎么做的不会对每个分支的Dockerfile进行更改。

1 个答案:

答案 0 :(得分:2)

您应该能够通过Docker Hub的自动构建和构建设置执行您所描述的内容,设置Github标记名称与<之间的模式匹配strong> Docker标记名称。您可以使用通配符和变量{sourceref}`,“它引用源分支/标记名称”。

每当您使用与Github标记匹配的Docker标记推送新图像时,它将提取匹配的Dockerfile - 之前的标记将保持不变。所以有人可以通过使用标记作为参考来提取较旧的Docker镜像和匹配的Github代码:

ENV APP_VER=2.1.0
RUN git clone ... app.git; git -C app checkout ${APP_VER}

在这种情况下,它假设您设置了Docker Hub以匹配值,并且每个标记(Docker image和Github)都是2.1.0

我不太确定“每个分支”是什么意思,这可能是混乱的一部分,特别是如果你已经习惯了SVN。在git中,标签不是绑定到分支而是绑定到特定的提交(或者〜时间点),因此当您检索该标记时,它总是会使用与提交时相同的代码版本。制作。 (通常与发布时间相同。)