首页 > 编程语言 >docker~构建java应用程序的正确姿势

docker~构建java应用程序的正确姿势

时间:2023-12-14 13:44:56浏览次数:30  
标签:maven java JDK -- 应用程序 Maven 镜像 docker

我们的构建和打包,都是在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

标签:maven,java,JDK,--,应用程序,Maven,镜像,docker
From: https://www.cnblogs.com/lori/p/17900999.html

相关文章

  • 无涯教程-Java - sin()函数
    该方法返回指定双精度值的正弦值。sin()-语法doublesin(doubled)这是参数的详细信息-d  - 双精度数据类型。sin()-返回值此方法返回指定双精度值的正弦。sin()-示例publicclassTest{publicstaticvoidmain(Stringargs[]){doubledegree......
  • Java 小文件上传、大文件分片上传、断点续传、秒传的开发原理
    1、前言 文件上传在项目开发中再常见不过了,大多项目都会涉及到图片、音频、视频、文件的上传,通常简单的一个Form表单就可以上传小文件了,但是遇到大文件时比如1GB以上,或者用户网络比较慢时,简单的文件上传就不能适用了,用户辛苦传了好几十分钟,到最后发现上传失败,这样的系统用户体......
  • Docker安装Kafka安装zookeeper教程(超详细)
    1Docker安装Kafka安装zookeeper教程(超详细)2app-tier:网络名称3-driver:网络类型为bridge41.dockernetworkcreateapp-tier--driverbridge561、安装zookeeper7Kafka依赖zookeeper所以先安装zookeeper8-p:设置映射端口(默认2181)9-d:后台启动101......
  • 软件测试/测试开发|Docker+Jmeter+InfluxDB+Grafana 搭建性能监控平台
    为什么要搭建性能监控平台?1.1需求背景在用Jmeter获取性能测试结果的时候,Jmeter本身带有聚合报告如下图所示:这个报告有几个很明显的缺点:只能自己看,无法实时共享;报告信息的展示比较简陋单一,不直观;1.2需求方案为了解决上述问题,必须要请出了InfluxDB+Grafana......
  • 软件测试/人工智能|Java Edit Plus 安装与配置指南
    前言最近我这个一直使用Python的人,开始尝试学习了一下Java,我的朋友跟我说,别像Python那样,开始就使用一个功能强大的IDE,Java语法更为复杂,可以先使用一个轻量化的编辑器,我开始准备使用notepad++,我朋友跟我推荐了EditPlus,我使用之后,就真香了,本文就给大家介绍一下EditPlus的安装和配......
  • JavaWeb - day07 - MySQL - DQL、多表设计
    01.MySQL-DQL-基本查询介绍DQL英文全称是DataQueryLanguage(数据查询语言),用来查询数据库表中的记录。查询关键字:SELECT查询操作是所有SQL语句当中最为常见,也是最为重要的操作。在一个正常的业务系统中,查询操作的使用频次是要远高于增删改操作的。当我们打开某个网站或APP......
  • java递归
    一、递归概述示例:packagecom.itbianma12;publicclassDemo{publicstaticvoidmain(String[]args){System.out.println(f(20));}publicstaticintf(intn){if(n==1||n==2){return1;}else{re......
  • java File类
    一、File的概述和构造函数示例: 二、File类创建功能 示例: 三、File类判断和获取功能 示例: 四、File类删除功能示例: ......
  • Java基础知识概览总结
    1.Java语法数据类型:Java中的基本数据类型包括整型、浮点型、字符型和布尔型,而引用类型包括类、接口和数组等。变量和常量:使用关键字var、final和static声明变量和常量。运算符:包括算术运算符、比较运算符、逻辑运算符和位运算符等。控制流程:使用条件语句(if-else、switch)、循环......
  • docker和docker-compose生产的容器,不在同一个网段,解决方式
    在实际项目中,使用dockerrunxxXx 和docker-composeup-d不在同一个网段,一个是默认是172.17.x.x, 另一个是172.19.x.x。为解决这个问题需要自定义一个网络,我命名为“my-bridge”首先熟悉几条命令:dockernetworkls或者dockernetworklist查看当前的docker网络的内容、容器的......