我正在嘗試自動構建 Docker 映像。假設在一個目錄中,有幾個Dockerfile檔案。其中一些被命名為Dockerfile.test或Dockerfile_node在單個目錄中有多個檔案,并且它們不能全部命名為Dockerfile。
我有一個簡單的腳本,它可以找到所有這些檔案并需要呼叫 docker build。
這是我用來定位所有 Dockerfile 的命令。
list=$(find . -name "Dockerfile*")
我得到以下串列:
./Dockerfile1
./testing/Dockerfile
./testing/Dockerfile_kubernetes
為了獲取背景關系,我需要找到包含Dockerfile檔案的目錄。
files=$(find . -name "Dockerfile*" -exec dirname {} \;)
對于每個 Dockerfile,我呼叫docker build. 像這樣的東西...
for x in $files; do docker build $x; done;
我無法執行docker build,因為我收到以下錯誤。
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/ubuntu/repo/Dockerfile: no such file or directory
運行該docker build命令只會構建一個定義在./testing/Dockerfile.
我知道Dockerfile在一個目錄中有多個檔案并這樣命名它們是不好的做法,但我不是做出這些決定的人。我只需要讓它作業。
有沒有辦法構建這些 Dockerfile?
uj5u.com熱心網友回復:
您需要將 docker 檔案名傳遞給構建命令。
for x in $files; do docker build -f $x .; done;
默認情況下, docker build 命令將在構建背景關系的根目錄中查找 Dockerfile。-f, --file, 選項允許您指定要使用的替代檔案的路徑
https://docs.docker.com/engine/reference/commandline/build/
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/455984.html
標籤:重击 码头工人 dockerfile 码头工人建造
下一篇:檢查服務是否在Linux中安裝
