Docker构建时间参数

时间:2016-09-06 15:20:37

标签: docker

我有一堆Dockerfiles是使用相同的构建命令从一个通用的自动化位置构建的:

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

一些Dockerfiles包含:

ARG BRANCH=master

该参数用于图像构建的某些步骤。

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

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

如果不将参数包含在所有Dockerfiles中,我怎样才能解决这个问题?

2 个答案:

答案 0 :(得分:3)

您是否考虑过将您的Dockerfile格式化为BRANCH并使用结果来决定是否应该提供您的ARG?

您可以使用以下内容替换自动构建触发器:

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

答案 1 :(得分:0)

在没有更改输入或Dockerfile的情况下,我没有看到任何记录的方法来避免此错误。 robertobado已经涵盖了改变你的意见。作为第二个选项,您可以在Dockerfile末尾包含一个有效未使用的构建arg,这对构建产生的影响非常小。

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

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