2016-09-06 39 views
2

我有一堆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這個問題?

回答

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

是的,這是一個替代方案,但是我需要修改所有可能不可擴展的Docker文件,當我有很多Docker文件時。感謝您的回答。 – hosselausso