我已经设置了一个包含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。
在从一个分支到另一个分支的拉取请求之后,是否有办法在自动化建筑上使用不同的分支而不更改任何内容?谢谢。
答案 0 :(得分:2)
使用自动构建时,会发生这种情况;
从上面;你应该在所有的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