我有一堆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中,我怎样才能解决这个问题?
答案 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}"
由于这不会修改文件系统,我相信图像校验和将是相同的。