Docker

如何在 Dockerfile 中插入 Jenkins 環境變數?

  • May 27, 2020

我有一個 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應該盡可能地重現,而不依賴於建構上下文。如果您想要在建構過程中使用變數,則必須顯式設置它。

引用自:https://serverfault.com/questions/1018943