2016-07-03 35 views
9

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

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} 

在这个例子中,我会保持这一设置APP_VER到2.1.0,然后泊坞集线器支持泊坞窗文件的标记的分支,但如果我对repo进行了更改,目前还不清楚如何不更改每个分支的Dockerfile。

+1

如果在Github中标记了该文件,则该文件将不会更改,因为您将链接到带标记的文件,不是?例如,[nginx](https://hub.docker.com/r/_/nginx/)。 – ldg

+0

是的,你必须改变每个版本的文件,它看起来像nginx一样 – Lizbeth

回答

2

你应该能够做你通过码头工人枢纽的自动化构建和生成设置描述什么,建立你的Github上的标签名称泊坞标签名称的图案匹配。您可以使用通配符和引用源分支/标记名称的变量{sourceref}`“。

无论何时您使用与Github标签相匹配的Docker标签推送新图像,都会拉取匹配的Dockerfile - 之前的标签将保持不变。因此,有人可以通过使用标签作为参考拉一个旧码头工人图像和匹配Github的代码,你所提到的:

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

在这种情况下,假定您已经泊坞枢纽设置匹配的值和每个标签(Docker镜像和Github)是2.1.0

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