Docker构build时间参数

我有一堆Dockerfiles是使用相同的构build命令从一个公共的自动化的地方构build的:

docker build -t $name:$tag --build-arg BRANCH=$branch . 

一些Dockerfiles包含这个:

 ARG BRANCH=master 

这个参数被用于图像构build的一些步骤。

但是对于一些不需要这个参数的Dockerfiles,最后我得到这个错误:

 One or more build-args [BRANCH] were not consumed, failing build. 

我怎样才能克服这个问题,而不包括所有的Dockerfiles参数?

你有没有考虑greer你的Dockerfile的BRANCH,并用它来决定是否应该提供你的ARG?

你可以用你的自动构build触发器来代替:

if grep BRANCH Dockerfile; then docker build -t $name:$tag --build-arg BRANCH=$branch .; else docker build -t $name:$tag . ; fi

我没有看到任何logging的方式来避免这个错误,而不改变你的input或Dockerfile。 robertobado已经涵盖改变你的input。 作为第二个选项,您可以在Dockerfile的末尾包含一个有效的未使用的构build参数,这对您的构build影响很小。

 ARG BRANCH=undefined RUN echo "Built from branch ${BRANCH}" 

由于这不会修改文件系统,我相信图像校验和将是相同的。