docker~构建java应用程序的正确姿势
  XfpaLQko7Ata 2023年12月19日 87 0

我们的构建和打包,都是在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项目。
  1. maven:3-jdk-11
  • 如果你的项目需要使用JDK 11,你可以选择这个镜像。它包含了Maven 3和JDK 11。
  1. maven:alpine
  • Alpine Linux是一个轻量级的Linux发行版,因此基于Alpine的Maven镜像也会更加轻量级。如果你对镜像大小有要求,可以考虑使用这个镜像。
  1. adoptopenjdk/maven-openjdk11
  • 由AdoptOpenJDK提供的Maven镜像,集成了Maven和AdoptOpenJDK 11。
  1. 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

作者:仓储大叔,张占岭,
荣誉:微软MVP



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月19日 0

暂无评论

推荐阅读
XfpaLQko7Ata