通过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.rhkb.cn/news/290921.html

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

相关文章

PS从入门到精通视频各类教程整理全集,包含素材、作业等(2)

PS从入门到精通视频各类教程整理全集,包含素材、作业等 最新PS以及插件合集,可在我以往文章中找到 由于阿里云盘有分享次受限制和文件大小限制,今天先分享到这里,后续持续更新 初级教程素材 等文件 https://www.alipan.com/s/fC…

个人简历主页搭建系列-04:网站初搭建

准备工作差不多了,该开始搭建网站了! 这次我们先把网站搭建部署起来,关于后续主题内容等更换留到后续。 创建源码文件夹 首先通过 hexo 创建本地源码文件夹。因为最终部署的 github 仓库格式为 websiteName.github.io(websiteN…

注意力机制篇 | YOLOv8改进之在C2f模块添加EMA注意力机制(附2种改进方法)

前言:Hello大家好,我是小哥谈。EMA(Exponential Moving Average)注意力机制是一种用于增强模型性能的注意力机制,它通过对模型的特征图进行加权平均来提取更有用的特征信息。具体来说,EMA注意力机制通过引入一个权重因子来调整特征图中每个位置的重要性,从而使模型能够更…

操作系统系列学习——操作系统历史

文章目录 前言操作系统历史 前言 一个本硕双非的小菜鸡,备战24年秋招,计划学习操作系统并完成6.0S81,加油! 本文总结自B站【哈工大】操作系统 李治军(全32讲) 老师课程讲的非常好,感谢 【哈工大…

MSTP环路避免实验(华为)

思科设备参考:MSTP环路避免实验(思科) 一,技术简介 MSTP(多生成树协议),MSTP解决了STP和RSTP没有考虑vlan的问题,STP和RSTP将所有的vlan共享为一个生成树实例,无法实现…

Delphi模式编程

文章目录 Delphi模式编程涉及以下几个关键方面:**设计模式的应用****Delphi特性的利用****实际开发中的实践** Delphi模式编程的实例 Delphi模式编程是指在使用Delphi这一集成开发环境(IDE)和Object Pascal语言进行软件开发时,采用…

TR2 - Transformer模型的复现

目录 理论知识模型结构结构分解黑盒两大模块块级结构编码器的组成解码器的组成 模型实现多头自注意力块前馈网络块位置编码编码器解码器组合模型最后附上引用部分 模型效果总结与心得体会 理论知识 Transformer是可以用于Seq2Seq任务的一种模型,和Seq2Seq不冲突。 …

伦敦银短线交易频率可以有多高?

伦敦银是很适合于短线交易的品种,至于交易的频率可以短到什么程度,取决于投资者采用的是手动交易,还是程序化的交易。高频交易(HFT)是一种利用计算机算法和高速网络进行的快速交易策略。高频交易者会利用复杂的数学模型…

提取gdip-yolo与ia-seg中的图像自适应模块进行图像去雾与亮度增强

gdip-yolo与ia-seg都是一种将图像自适应模块插入模型前面,从而提升模型在特定数据下检测能力的网络结构。gdip-yolo提出了gdip模块,可以应用到大雾数据与低亮度数据(夜晚环境),然后用于目标检测训练;ia-seg将ia-yolo中的代码修改了一下修车了ipam模块,应用到低亮度数据(…

新能源充电桩站场视频汇聚系统建设方案及技术特点分析

随着新能源汽车的普及,充电桩作为新能源汽车的基础设施,其安全性和可靠性越来越受到人们的关注。为了更好地保障充电桩的安全运行与站场管理,TSINGSEE青犀&触角云推出了一套新能源汽车充电桩视频汇聚管理与视频监控方案。 方案采用高清摄…

游戏赛道新机会:善用数据分析,把握游戏赛道广告变现良机 | TOPON变现干货

12月10日,由罗斯基联合TopOn、钛动科技共同主办的《游戏赛道新机会》主题系列沙龙在武汉举办。活动邀请了国内外多家业内知名公司的负责人到场分享,现场嘉宾分别从自己擅长的领域出发,通过数据分析,案例复盘等多个维度方向进行讲解…

国内IP代理软件电脑版:深入解析与应用指南

随着互联网技术的快速发展,网络活动日益丰富多样,IP代理软件也因其独特的功能和优势,成为许多电脑用户不可或缺的工具。在国内,由于网络环境的复杂性和特殊性,选择一款稳定、高效的IP代理软件电脑版尤为重要。虎观代理…

SpringBoot 登录认证(二)

SpringBoot 登录认证(一)-CSDN博客 SpringBoot 登录认证(二)-CSDN博客 SpringBoot登录校验(三)-CSDN博客 HTTP是无状态协议 HTTP协议是无状态协议。什么又是无状态的协议? 所谓无状态&…

刷题之动态规划

前言 大家好,我是jiantaoyab,开始刷动态规划的题目了,要特别注意初始化的时候给什么值。 动态规划5个步骤 状态表示 :dp数组中每一个下标对应值的含义是什么->dp[i]表示什么状态转移方程: dp[i] 等于什么1 和 2 是…

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

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

第三十二天-Django模板-DTL模板引擎

目录 1.介绍 2. 使用 1.配置jinja2 2.DTL模板变量使用 3.与jinja2区别 4.模板标签使用 1.循环 2.条件控制 3.注释 4.url解析 5.显示时间 5.模板的基础与包含 6.过滤器 内置过滤器 自定义过滤器 1.介绍 2. 使用 1.配置jinja2 2.DTL模板变量使用 与jinja2语法相似…

短视频矩阵系统--技术3年源头迭代

短视频矩阵系统核心技术算法主要包括以下几个方面: 1. 视频剪辑:通过剪辑工具或API从各大短视频平台抓取符合要求的视频。这些视频通常符合某些特定条件,如特定关键词、特定时间段发布的视频、视频点赞评论转发等数据表现良好的视频。 2. 视…

vue3+threejs新手从零开发卡牌游戏(二十一):添加战斗与生命值关联逻辑

首先将双方玩家的HP存入store中,stores/common.ts代码如下: import { ref, computed } from vue import { defineStore } from piniaexport const useCommonStore defineStore(common, () > {const _font ref() // 字体const p1HP ref(4000) // 己…

[Python GUI PyQt] PyQt5快速入门

PyQt5快速入门 PyQt5的快速入门0. 写在前面1. 思维导图2. 第一个PyQt5的应用程序3. PyQt5的常用基本控件和布局3.1 PyQt5的常用基本控件3.1.1 按钮控件 QPushButton3.1.2 文本标签控件 QLabel3.1.3 单行输入框控件 QLineEdit3.1.4 A Quick Widgets Demo 3.2 PyQt5的常用基本控件…

大模型重塑电商,淘宝、百度、京东讲出新故事

配图来自Canva可画 随着AI技术日渐成熟,大模型在各个领域的应用也越来越深入,国内互联网行业也随之进入了大模型竞赛的后半场,开始从“百模大战”转向了实际应用。大模型从通用到细分垂直领域的跨越,也让更多行业迎来了新的商机。…