docker~構建java應用程序的正確姿勢

我們的構建和打包,都是在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鏡像:

  1. maven:3-jdk-8

    • 這個鏡像包含了Maven 3和JDK 8,適合大多數基於JDK 8的Java項目。
  2. maven:3-jdk-11

    • 如果你的項目需要使用JDK 11,你可以選擇這個鏡像。它包含了Maven 3和JDK 11。
  3. maven:alpine

    • Alpine Linux是一個輕量級的Linux發行版,因此基於Alpine的Maven鏡像也會更加輕量級。如果你對鏡像大小有要求,可以考慮使用這個鏡像。
  4. adoptopenjdk/maven-openjdk11

    • 由AdoptOpenJDK提供的Maven鏡像,集成了Maven和AdoptOpenJDK 11。
  5. 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章