在Github-Dockerhub上自动构建的Docker工作流程

时间:2017-04-01 10:49:25

标签: git github docker workflow dockerhub

我已经设置了一个包含3个分支(master,dev和docker)的github存储库。我已经成功设置并链接了dockerhub上的自动构建。每次在Github上完成推送时,都会在Dockerhub上构建一个带有不同标记的图像(最新版为master,beta版为dev,alpha版为docker)。这工作正常。现在问题是......

在Dockerfile上,有一个git clone命令来检索项目。问题是这总是指向大师。因此,如果我将某些内容推送到docker分支(例如,使用alpha标记构建图像),该图像上的项目代码是master的代码,而不是分支docker的代码,这是本案例所需的。

如果我修改分支docker的Dockerfile(生成alpha标记的图像)并且我放git clone -b docker ...构建是可以的,但是在所有测试之后,当我想要从docker分支到pull请求合并时例如,dev分支,dev需要另一个更新,以更改Dockerfile内的git clone命令以指向正确的分支。而且从开发到掌握的拉取请求与此项目的额外困难一样,主分支受到保护,我无法直接推送到主...所以在从dev到master的拉取请求之后我可以&# 39;修复Dockerfile更改Dockerfile以将git clone更改为再次指向master。

在从一个分支到另一个分支的拉取请求之后,是否有办法在自动化建筑上使用不同的分支而不更改任何内容?谢谢。

1 个答案:

答案 0 :(得分:2)

使用自动构建时,会发生这种情况;

  • Docker Hub(或具有更多高级功能的Docker Cloud)检出触发构建的git提交
  • 它构建您配置为在自动构建中构建的Dockerfile

从上面;你应该在所有的Dockerfile country_name,因为你正在做自动构建已经完成的工作。简单地做;

keyby()

Docker Cloud具有高级功能,允许您使用build phase hooks (documentation)在自动构建的各个阶段运行自定义脚本。这允许您(例如)通过在“构建图像”中构建项目,然后将生成的代码复制到本地目录,并从中构建最终图像来制作“最小”图像。

修改

Docker Cloud上的自动构建选项具有比Docker Hub上的自动构建更多的功能。例如,要构建的Dockerfile和构建上下文可以单独设置。这允许您在子目录中具有Dockerfile,但是使用该子目录之外的文件作为构建上下文。为此,请将Dockerfile位置设置为(例如)git clone,将buildcontext设置为FROM some-base-image # Copy your project's source into the image COPY . /my-src RUN do-something-with-the-source

enter image description here