我們的構建和打包,都是在docker 環境進行的,你可以使用Dockerfile中的多鏡像模式,也可以單獨執行,我是在jenkins pipeline中用到這個,所以我單獨寫,這個使我的Dockerfile更加簡潔。
構建java項目,我們爲了保證宿主機的整潔,我們採用docker的方式進行項目的編譯和打包
$workspace是在docker環境下的環境變量,指的是當前項目所在的目錄,--privileged=true是指在容器內運行時是否開啓特權模式,Docker將賦予容器訪問主機上所有設備的權限,settings.xml文件也是在當前項目下的
docker run --privileged=true -v $workspace/:/src/ --workdir=/src/ --user root --tty --rm maven:3-jdk-8 sh -c 'mvn clean install -e -U -Dmaven.test.skip=true'
build image指定.m2的settings.xml文件
--rm:Docker會自動清理和刪除該容器,釋放系統資源;--tty你可以在容器中獲得一個交互式終端,從而可以執行命令、查看輸出等.
docker run --privileged=true -v $workspace/:/src/ --workdir=/src/ --user root --tty --rm maven:3-jdk-8 sh -c 'mvn clean install -e -U -Dmaven.test.skip=true -s /src/.m2/settings.xml'
maven鏡像推薦
在使用Docker進行Java項目的構建時,你可以選擇一個適合的Maven鏡像來作爲構建環境。以下是一些常用的Maven鏡像:
-
maven:3-jdk-8:
- 這個鏡像包含了Maven 3和JDK 8,適合大多數基於JDK 8的Java項目。
-
maven:3-jdk-11:
- 如果你的項目需要使用JDK 11,你可以選擇這個鏡像。它包含了Maven 3和JDK 11。
-
maven:alpine:
- Alpine Linux是一個輕量級的Linux發行版,因此基於Alpine的Maven鏡像也會更加輕量級。如果你對鏡像大小有要求,可以考慮使用這個鏡像。
-
adoptopenjdk/maven-openjdk11:
- 由AdoptOpenJDK提供的Maven鏡像,集成了Maven和AdoptOpenJDK 11。
-
fabric8/maven:
- 這個鏡像除了包含Maven之外,還集成了一些用於Kubernetes和OpenShift的工具和插件,適合需要與容器平臺集成的項目。
在選擇Maven鏡像時,你可以根據自己項目的需求來決定使用哪個版本的JDK以及是否需要額外的工具和插件。另外,你也可以根據鏡像的大小、更新頻率等因素來做出選擇。希望這些信息能夠幫助你選擇適合的Maven鏡像進行Java項目的構建。
Springboot項目的Dockerfile
FROM fabric8/java-jboss-openjdk8-jdk:1.4
USER root
# local time
ENV TZ "Asia/Shanghai"
# chinese font for centos7
RUN yum install kde-l10n-Chinese -y
RUN yum install glibc-common -y
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LC_ALL zh_CN.UTF-8
# cp jar
COPY ./target/ruoyi-admin.jar /deployments/app.jar