背景
每次通過 docker build 'xxx' 的時候,總是會去maven鏡像下載一大堆Jar包,平均每次build都要在3分鐘左右,效率非常低下,于是查閱了各種辦法試圖讓第一次構建的時候才下載jar包,后面的構建都能復用,類似于本地開發代碼會指定maven倉庫一樣
實作方案
使用 -Dmaven.repo.local 來顯示指定本地 maven 倉庫目錄,復用了依賴包快取,耗時降低了 91%
FROM maven:3.8.3-openjdk-11 AS MAVEN_BUILD COPY settings.xml /usr/share/maven/conf/settings.xml # 將作業目錄置于 /build WORKDIR /build # 定義專案地址, 允許用戶傳入引數 ARG project_url="./" # 將專案中的所有檔案添加到 /build 目錄中 ADD ./$project_url /build/ #快取maven倉庫 RUN mvn install -Dmaven.test.skip=true -Dmaven.repo.local=./.m2 # debug RUN ls -l # 構建打包 RUN mvn -Dmaven.repo.local=./.m2 install -Dmaven.test.skip=true -P prod # debug RUN ls -l FROM openjdk:11 COPY --from=MAVEN_BUILD /build/xxxxxx/target/xxx.jar /xxx.jar RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone EXPOSE 8086 #運維傳入配置解密秘鑰 ENV JASYPT_PASSWORD="" # 執行命令 ENTRYPOINT ["java","-jar","gitee-education.jar","--jasypt.encryptor.password=${JASYPT_PASSWORD}"]
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/499751.html
標籤:其他
上一篇:httpclient簡介說明
