一、背景:
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,希望可以帮助到大家!!!