通过dockerfile制作代码编译maven3.8.8+jdk17 基础镜像

一、背景:

paas平台维护过程中有一个流水线的工作需要支持运维,最近有研发提出新的需求要制作一个代码编译的基础镜像出来,代码编译的基础镜像需求如下:
maven版本:3.8.8版本
jdk版本:17版本,小版本没有具体要求的

基础镜像要求是centos 7.9的

二、下载maven、jdk软件: 

1、下载jdk-17版本:

# wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

注:在制作时,需要指定目录,这里指定的是/xhj

2、下载maven 3.8.8版本:

这里是直接在官网上下载的

Maven – Download Apache Maven

 

下载之后将文件上传至/xhj目录下,上传动作这里就描述了,自行处理; 

三、开发Dockerfile文件内容: 

[root@stsc-master-01 xhj]# vim Dockerfile
FROM centos:7.9.2009
MAINTAINER xionghj
ADD jdk-17_linux-x64_bin.tar.gz  /usr/local/java/
ADD apache-maven-3.8.8-bin.tar.gz /usr/local
ENV JAVA_HOME=/usr/local/java/jdk-17.0.10
ENV CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar
ENV PATH=$PATH:$JAVA_HOME/bin
ENV MAVEN_HOME=/usr/local/apache-maven-3.8.8
ENV PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH

语法解析:

FROM:是引入基础镜像

MAINTAINER :描述镜像信息,主要是描述作者的
ADD :复制文件到镜像内,同时支持解压功能,与COPY不同
ENV :申明环境变量

四、构建镜像并验证镜像: 

1、 构建镜像:

[root@stsc-master-01 xhj]# docker build --platform linux/amd64  -t maven-jdk:v3.8.8-17.0.10 .

命令解析:
build:表示构建

--platform:表示申明镜像操作系统类别、架构

-t:表示构建镜像的名称及tag

 . :表示使用当前目录下的Dockerfile文件

Sending build context to Docker daemon  190.8MB
Step 1/9 : FROM centos:7.9.2009---> eeb6ee3f44bd
Step 2/9 : MAINTAINER xionghj---> Running in 1920884fbeef
Removing intermediate container 1920884fbeef---> 08bd6e233730
Step 3/9 : ADD jdk-17_linux-x64_bin.tar.gz  /usr/local/java/---> 7a4b741c8d1b
Step 4/9 : ADD apache-maven-3.8.8-bin.tar.gz /usr/local---> b4ee05caffa7
Step 5/9 : ENV JAVA_HOME=/usr/local/java/jdk-17.0.10---> Running in b4de7726b4db
Removing intermediate container b4de7726b4db---> 6b88418e0d70
Step 6/9 : ENV CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar---> Running in 1af89c3c43fd
Removing intermediate container 1af89c3c43fd---> 65ab3e5b6f6f
Step 7/9 : ENV PATH=$PATH:$JAVA_HOME/bin---> Running in e08584fbcd51
Removing intermediate container e08584fbcd51---> d3c995b7f157
Step 8/9 : ENV MAVEN_HOME=/usr/local/apache-maven-3.8.8---> Running in 2a542665d081
Removing intermediate container 2a542665d081---> 6c9d4cd34098
Step 9/9 : ENV PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH---> Running in d35f0be3fb99
Removing intermediate container d35f0be3fb99---> afada222e5ff
Successfully built afada222e5ff
Successfully tagged maven-jdk:v3.8.8-17.0.10

查看构建的镜像 

[root@stsc-master-01 xhj]# docker images | grep maven-jdk
maven-jdk    v3.8.8-17.0.10    afada222e5ff     3 minutes ago       532MB

 2、验证镜像:

这里的验证镜像,就是通过docker run方式生成一个容器服务,然后登入容器里,执行:
java -version命令验证java环境
mvn -version命令验证maven环境

[root@stsc-master-01 xhj]# docker run -di --name maven-cicd -d maven-jdk:v3.8.8-17.0.10
e0fde146249af20ae0aec81102e141026d8a7c4ff3eaa76846e7b365a86fe729

 登入容器执行java、maven环境验证命令

[root@stsc-master-01 xhj]# docker exec -it maven-cicd /bin/bash
[root@e0fde146249a /]# java -version
java version "17.0.10" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 17.0.10+11-LTS-240)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11-LTS-240, mixed mode, sharing)
[root@e0fde146249a /]# mvn -version
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /usr/local/apache-maven-3.8.8
Java version: 17.0.10, vendor: Oracle Corporation, runtime: /usr/local/java/jdk-17.0.10
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.10.0-1127.el7.x86_64", arch: "amd64", family: "unix"
[root@e0fde146249a /]# 

 通过命令验证了java、maven环境是正常的,那就是使用了。

五、上传镜像到harbor仓库里: 

将制作好的基础镜像上传到harbor镜像仓库里

# docker push maven-jdk:v3.8.8-17.0.10

 总结:

到此就结束了代码编译基础镜像maven3.8+jdk17,希望可以帮助到大家!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/578383.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

npm install 报错ERESOLVE unable to resolve dependency tree

描述:npm install 报错ERESOLVE unable to resolve dependency tree 解决方案: npm install --legacy-peer-deps

39.基于SpringBoot + Vue实现的前后端分离-无人智慧超市管理系统(项目 + 论文PPT)

项目介绍 随着互联网时代的发展,传统的线下管理技术已无法高效、便捷的管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,国家在环境要求不断提高的前提下,无人智慧超市管理系统建设也逐渐进入了信…

算法沉淀——拓扑排序

前言: 首先我们需要知道什么是拓扑排序? 在正式讲解拓扑排序这个算法之前,我们需要了解一些前置知识(和离散数学相关) 1、有向无环图: 指的是一个无回路的有向图。 入度:有向图中某点作为图…

element-ui-plus el-tree 树形结构如何自定义内容

element-ui-plus el-tree 树形结构如何自定义内容 本文提及的 elementUI 版本 为 elementUI Plus 版本 一、需求 项目中遇到一个需要设置权限的地方,但目录和权限是放在一起的,这样就很不好区分类别,为了区分类别,就需要自定义树…

jsp用户登录界面

主界面 <% page contentType"text/html;charsetUTF-8" language"java" %> <html> <head><meta charset"UTF-8"><title>登录界面</title> </head> <body bgcolor"#faebd7"> <form…

JavaSE day15 笔记

第十五天课堂笔记 数组 可变长参数★★★ 方法 : 返回值类型 方法名(参数类型 参数名 , 参数类型 … 可变长参数名){}方法体 : 变长参数 相当于一个数组一个数组最多只能有一个可变长参数, 并放到列表的最后parameter : 方法参数 数组相关算法★★ 冒泡排序 由小到大: 从前…

用grafana+prometheus+cadvisor监控容器指标数据,并查询当前容器的网速网络用量

前言 整理技术&#xff0c;在这篇文章中&#xff0c;将会搭建grafanaprometheuscadvisor监控容器&#xff0c;并使用一个热门数据看板&#xff0c;再监控容器的性能指标 dashboard效果 这个是node-exporter采集到的数据&#xff0c;我没装node-exporter&#xff0c;而且这也…

解决 linux 服务器 java 命令不生效问题

在Linux系统中&#xff0c;当你安装Java并设置了JAVA_HOME环境变量后&#xff0c;你可能需要使用source /etc/profile命令来使Java命令生效。这是因为/etc/profile是一个系统级的配置文件&#xff0c;它包含了系统的全局环境变量设置。 但是需要注意的是&#xff0c;source /e…

Centos服务器Open Gauss 部署

近期很多的项目由于信创要求使用一些国产的数据库&#xff0c;比如OpenGauss。OpenGuass是华为高斯DB的开源版&#xff0c;内核还是PostgreSQL&#xff0c;商业版是收费的。这里记录一下是如何安装部署 的。 官方中文文档 官方下载地址 部署要求 操作系统要求 ARM&#xff…

基于SSM框架的校园失物招领系统:从设计思路到实现细节

末尾获取源码作者介绍&#xff1a;大家好&#xff0c;我是墨韵&#xff0c;本人4年开发经验&#xff0c;专注定制项目开发 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c;不进则退。学习如赶路&#xff0c;不能慢一步。 目录 一、项目简介 二、开发技术与环…

java的多态和final关键字

多态&#xff1a; 多态分为对象多态&#xff0c;行为多态 多态的前提&#xff1a; 有继承/实现关系&#xff1b;存在父类引用子类对象&#xff1b;存在方法重写&#xff1b; 注意&#xff1a;多态是对象&#xff0c;行为的多态&#xff0c;java的成员变量不谈多态 这是我写…

mysql5.7 源码分析--初始化

集中在sql\mysqld.cc文件的mysqld_main函数中&#xff08;&#xff09;&#xff1a; 主程序入口 在sql\main.cc文件中&#xff1a; int main(int argc, char **argv) {return mysqld_main(arg, argv); } 一、mysql为了跨平台&#xff0c;对win32系统做了单独的初始化&#x…