一千萬個為什麽

搜索

使用maven分享使用Docker構建(動態)圖像的Maven倉庫的最佳方式是什麽?



我們已經創建了一個Docker構建容器,由Jenkins為基於Java的項目運行。我們使用Maven構建我們的軟件。我們面臨的問題是,構建需要很長時間才能完成,主要原因是maven正在重新下載每個構建的所有依賴關系,maven從構建容器內部運行,而不是從管道步驟。

我們考慮過使用共享文件夾,但我們有動態構建代理,因此沒有共享文件夾。有沒有人使用相同的方法,是否有更好的方法?

轉載註明原文: 使用maven分享使用Docker構建(動態)圖像的Maven倉庫的最佳方式是什麽?

一共有 2 個回答:

你可能會使用docker builder模式。簡而言之,您需要創建Dockerfile.build,它添加 pom.xml 並運行 mvn dependency:resolve

FROM maven:latest
ADD ./pom.xml /src/pom.xml
WORKDIR /src
RUN mvn dependency:resolve

每次構建前重建該圖像。如果./pom.xml沒有改變,Docker將使用緩存的圖像。

Docker 17.05 introduced 'multi-stage builds' feature which implements this pattern. More information is available here: https://docs.docker.com/engine/userguide/eng-image/multistage-build/

可以在Docker鏡像中烘焙Maven依賴關系,以防止Maven需要一遍又一遍下載所有依賴項