我们的构建和打包,都是在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
标签:maven,java,JDK,--,应用程序,Maven,镜像,docker
From: https://www.cnblogs.com/lori/p/17900999.html