Dockerfile 构建 jdk17-maven3.8.8 容器
1.Dockerfile 构建 jdk17-maven3.8.8 容器
目录
下载 maven、jdk 软件:
下载 jdk17 版本:
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
注:在制作时,需要指定目录,这里指定 source-software
下载 maven 3.8.8 版本:
这里是直接在官网上下载的
Maven – Download Apache Maven
下载之后将文件上传至/source-software 目录下,上传动作这里就描述了,自行处理;
wget https://archive.apache.org/dist/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.tar.gz
开发 Dockerfile 文件内容:
国内yum源
阿里yum源:http://mirrors.aliyun.com/repo/
163(网易)yum源: http://mirrors.163.com/.help/
中科大的Linux安装镜像源:http://centos.ustc.edu.cn/
搜狐的Linux安装镜像源:http://mirrors.sohu.com/
北京首都在线科技:http://mirrors.yun-idc.com/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/Centos-7.repo
vim Dockerfile
FROM centos:7.9.2009
MAINTAINER TMesh
ADD Centos-7.repo /etc/yum.repos.d
ADD java/jdk/jdk-17_linux-x64_bin.tar.gz /usr/local/java/
ADD java/maven/apache-maven-3.8.8-bin.tar.gz /usr/local/maven
ENV JAVA_HOME=/usr/local/java/jdk-17.0.12
ENV CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar
ENV PATH=$PATH:$JAVA_HOME/bin
ENV MAVEN_HOME=/usr/local/maven/apache-maven-3.8.8
ENV PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
RUN mv /etc/yum.repos.d/Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo
RUN yum -y clean all
RUN yum -y makecache
RUN yum -y update --exclude=kernel* --exclude=centos-release*
RUN yum -y install vim
RUN yum -y install gcc automake autoconf libtool make
RUN yum -y install net-tools
RUN yum -y install apr-devel apr apr-util openssl-devel
EXPOSE 80
CMD echo $MYPATH
CMD echo "success--------------------ok"
CMD /bin/bash
VOLUME ["/application"]
WORKDIR /application
语法解析:
FROM:是引入基础镜像
MAINTAINER :描述镜像信息,主要是描述作者的
ADD :复制文件到镜像内,同时支持解压功能,与 COPY 不同
ENV :申明环境变量
构建镜像并验证镜像:
构建镜像:
docker build --platform linux/amd64 -t maven-jdk:v3.8.8-17.0.12 .
命令解析:
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/maven
---> b4ee05caffa7
Step 5/9 : ENV JAVA_HOME=/usr/local/java/jdk-17.0.12
---> 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.12
查看构建的镜像
[root@192 source-software]# docker images | grep maven-jdk
maven-jdk v3.8.8-17.0.12 afada222e5ff 3 minutes ago 532MB
验证镜像:
这里的验证镜像,就是通过 docker run 方式生成一个容器服务,然后登入容器里,执行:
java -version 命令验证 java 环境
mvn -version 命令验证 maven 环境
# nsenter 执行宿主机的命令,需要容器创建参数--pid=host --privileged=true
docker run -di --name jdk17-maven3.8.8 \
--restart=always \
--privileged=true \
--pid=host \
--net=host \
-v /mydata/application:/application \
-d maven-jdk:v3.8.8-17.0.12
登入容器执行 java、maven 环境验证命令
[root@192 source-software]# docker exec -it jdk17-maven3.8.8 /bin/bash
[root@e0fde146249a /]# java -version
java version "17.0.12" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 17.0.12+11-LTS-240)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+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"
通过命令验证了 java、maven 环境是正常的,那就是使用了。
上传镜像到 harbor 仓库里:
将制作好的基础镜像上传到 harbor 镜像仓库里
docker push maven-jdk:v3.8.8-17.0.10
合集:
Dockerfile
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!