Docker
如何在 Dockerfile 中插入 Jenkins 環境變數?
我有一個 Jenkins 管道,管道
的階段之一是從 Java 應用程式碼建構工件。
工件總是使用 BUILD_ID jenkins 環境變數獲得名稱 hello-world-${BUILD_ID}.war,每次建構都會更改工件的名稱。
比,我還有另一個階段,我必須為這個工件建構一個 docker 映像。
Docker 文件的其中一行是:
COPY hello-world-war-1.0.${BUILD_ID}.war /usr/local/tomcat/webapps/java-app.war
在這一行中,我必須將工件複製到 docker 映像。
出於某種原因,提到的插值不起作用,當我執行管道時,我得到了同樣的錯誤:
COPY failed: stat hello-world-war-1.0..war: no such file or directory
當然,當我在 Dockerfile 中硬編碼建構 ID 的編號時,一切正常。
附件是整個 Dockerfile 的截圖。
提前感謝您的幫助!
您必須將您的
BUILD_ID
作為建構參數傳遞。在你的
Dockerfile
:ARG BUILD_ID
在您的
docker build
命令中:docker build ... --build-arg BUILD_ID="${BUILD_ID}" ...
類似的環境變數
${BUILD_ID}
不會傳遞給 Dockerfile 命令。這是自願的,因為docker build
應該盡可能地重現,而不依賴於建構上下文。如果您想要在建構過程中使用變數,則必須顯式設置它。