背景
- 项目学习之初, 在本地用的是 jdk21, 所以如果想要用 docker 部署, 就需要 jdk21 的镜像, 很遗憾, 在网上没找到现成的( 也有可能是我不会找)
准备工作
-
一台 Linux 服务器, 我在阿里云上买的 centos 7.9
-
jdk-21_linux-x64_bin.tar.gz 下载地址
-
apache-maven-3.9.9-bin.tar.gz 下载地址
制作流程
-
新建一个目录: jdk(目录名字随便起, 我使用的是 jdk)
mkdir jdk
-
将下载好的 jdk 和 maven 文件放入 jdk 目录
[root@iZ2zebhs1xui02zif4j269Z jdk]# ls apache-maven-3.9.9-bin.tar.gz Dockerfile jdk-21_linux-x64_bin.tar.gz
-
在 jdk 目录下新建一个 Dockerfile 文件
FROM centos:7.9.2009 ADD jdk-21_linux-x64_bin.tar.gz /usr/local ADD apache-maven-3.9.9-bin.tar.gz /usr/local ENV JAVA_HOME=/usr/local/jdk-21.0.4 ENV MAVEN_HOME=/usr/local/apache-maven-3.9.9 ENV PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
-
执行 Dockerfile
docker build -t jdk21-mvn3.9.9:v1.0 .
- 执行结果
Sending build context to Docker daemon 206.7 MB Step 1/6 : FROM centos:7.9.2009 ---> eeb6ee3f44bd Step 2/6 : ADD jdk-21_linux-x64_bin.tar.gz /usr/local ---> Using cache ---> 2b98b6050f9d Step 3/6 : ADD apache-maven-3.9.9-bin.tar.gz /usr/local ---> Using cache ---> 19cb5303fe32 Step 4/6 : ENV JAVA_HOME /usr/local/jdk-21.0.4 ---> Running in 969b02b55e92 ---> b7925c208a9c Removing intermediate container 969b02b55e92 Step 5/6 : ENV MAVEN_HOME /usr/local/apache-maven-3.9.9 ---> Running in 9ada82a6e0ed ---> 5a2a35a2bd52 Removing intermediate container 9ada82a6e0ed Step 6/6 : ENV PATH $JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH ---> Running in 560722dc16f8 ---> 607c4b496e18 Removing intermediate container 560722dc16f8 Successfully built 607c4b496e18
-
启动镜像
docker run -it -d --hostname jdk-test --name jdk-test jdk21-mvn3.9.9:v1.0
-
进入容器查看 jdk 和 maven 启动情况
docker exec -it jdk-test bash
- 查看 Java 版本
java -version
- 执行结果
java 21.0.4 2024-07-16 LTS Java(TM) SE Runtime Environment (build 21.0.4+8-LTS-274) Java HotSpot(TM) 64-Bit Server VM (build 21.0.4+8-LTS-274, mixed mode, sharing)
- 查看 mvn 版本
mvn -v
- 执行结果
Apache Maven 3.9.9 (8e8579a9e76f7d015ee5ec7bfcdc97d260186937) Maven home: /usr/local/apache-maven-3.9.9 Java version: 21.0.4, vendor: Oracle Corporation, runtime: /usr/local/jdk-21.0.4 Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-1127.19.1.el7.x86_64", arch: "amd64", family: "unix"
测试成功, 上传到镜像仓库, 至此我需要的 docker 镜像完成