2016-09-06 5 views
2

내가 같은 빌드 명령을 사용하여 공통의 자동화 된 장소에서 구축되는 Dockerfiles의 무리가 있습니다도커 구축 시간 인수

ARG BRANCH=master 

그리고 그 :

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

Dockerfiles 중 일부는이 포함을 인수는 이미지 빌드의 일부 단계에 사용됩니다.

하지만 마지막에이 오류가 그 인수를 필요로하지 않는 일부 Dockerfiles에 대한

:

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

어떻게 모든 Dockerfiles에 대한 인수를 포함하지 않고이 문제를 극복 할 수 있는가?

답변

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

+0

물론, 그 순간에 내가하고있는 일이지만, Dockerfile의 내용을 if-else 검사하는 것을 피하려고했지만 이것이 유일한 방법 인 것 같습니다. 감사! – hosselausso

0

내가 귀하의 의견이나 Dockerfile을 변경하지 않고이 오류를 방지 할 수있는 문서화 된 방법을 볼 수 없습니다 :

당신은 같은 것을 사용하여 자동화 빌드 트리거를 대체 할 수 있습니다. robertobado는 이미 입력 내용을 변경하는 것을 다룹니다. 두 번째 옵션으로 Dockerfile의 끝 부분에 효과적으로 사용되지 않는 빌드 인자를 포함시킬 수 있습니다. 빌드 인수는 빌드에 미미한 영향을 미칩니다.

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

이것은 파일 시스템을 변경하지 않기 때문에 이미지 체크섬이 동일 할 것이라고 생각합니다.

+0

예, 그 대안 이었지만, 많은 Dockerfiles를 수정할 필요가 있습니다. 귀하의 답변에 감사드립니다. – hosselausso