我正在嘗試使用docker來自動化Maven構建。我想要構建的項目花費了將近20分鐘的時間來下載所有的依賴關係,因此我試圖構建一個可以緩存這些依賴關係的Docker鏡像,但似乎並沒有挽救它。我的Dockerfile是Maven碼頭緩存依賴關係
FROM maven:alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ADD pom.xml /usr/src/app
RUN mvn dependency:go-offline
圖像構建,它確實下載了所有內容。但是,生成的圖像與基本圖像maven:alpine
的大小相同,所以它似乎沒有緩存圖像中的依賴關係。當我嘗試使用mvn compile
的圖片時,它會在完成20分鐘的所有重新下載之後進行。
是否可以構建緩存我的依賴關係的Maven圖像,以便每次使用圖像執行構建時都不必下載它們?
我運行下面的命令:
docker build -t my-maven .
docker run -it --rm --name my-maven-project -v "$PWD":/usr/src/mymaven -w /usr/src/mymaven my-maven mvn compile
我的理解是,無論RUN
在泊塢窗構建過程確實成爲導致圖像的一部分。
製作一個數據容器,其中包含下載的工件...您建立了多少個模塊?你有多少次測試?導致20分鐘聽起來很長? – khmarbaise
你能解釋一下數據容器的含義嗎?我想我最終會得到一個擁有這些數據的maven圖像。 「mvn dependency:go-offline」不會保存這些對本地文件系統的依賴關係嗎? –
如果您對本地文件系統有任何更改,如果您重新啓動容器,那麼這些更改將被丟棄... – khmarbaise