构建一个包含mvn命令的Java 17基础镜像

前言

官方提供的openjdk基础镜像,不包含mvn命令,无法用容器来打包代码。

在官方提供的镜像基础上安装maven。

前期准备,需要安装好docker。

一、安装maven

1、下载openjdk基础镜像,执行如下代码。

docker pull openjdk:17-jdk-alpine

2、使用基础镜像运行一个容器,执行如下命令。

docker run -it openjdk:17-jdk-alpine sh

3、修改镜像源地址,执行如下命令。

cat /etc/apk/repositories
https://mirrors.aliyun.com/alpine/v3.14/main
https://mirrors.aliyun.com/alpine/v3.14/community

4、下载安装maven,执行如下命令。

apk update && \
wget -O /tmp/apache-maven.tar.gz https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz && \
mkdir -p /usr/share/maven && \
tar -zxvf /tmp/apache-maven.tar.gz -C /usr/share/maven --strip-components=1 && \
rm -f /tmp/apache-maven.tar.gz && \
ln -s /usr/share/maven/bin/mvn /usr/bin/mvn

5、检查maven是否安装完成,执行如下命令。

mvn --version

正常情况会返回如下内容。

6、构建新镜像,执行如下命令。

docker commit -m "含maven的jdk镜像" 7da01751c5bb ayzen/openjdk:17-jdk-alpine

7da01751c5bb:为上面运行的容器id。

7、至此,在openjdk镜像基础上安装maven的新镜像已完成。

二、测试验证

1、使用新镜像运行容器,执行如下命令。

docker run -it ayzen/openjdk:17-jdk-alpine sh

2、找一个Java项目测试打包,执行如下命令。

mvn clean package -DskipTests

等待一会正常情况会输出如下内容,说明已打包完成。

3、运行Java项目,执行如下命令。

java -jar target/springboot-hello-1.0-SNAPSHOT.jar

正常情况会输出如下内容,说明服务已正常运行。

4、至此、maven的测试已验证完成。

总结

因为官方提供的openjdk基础镜像不包含maven,所以需要自己动手加,步骤也比较简单。

1、下载官方的基础镜像。

2、运行镜像,在容器内安装maven,构建新镜像。

3、测试验证新镜像。

最后因本人能力有限,有什么不对的地方望各位大佬指出好让我改进,多多包含,谢谢大家。

创建一个Java环境的Docker镜像通常涉及以下步骤: 1. 准备Dockerfile:编写一个Dockerfile来定义镜像的内容和行为。Dockerfile是一个文本文件,包含了所有构建镜像所需的命令和参数。 2. 设置基础镜像:在Dockerfile中使用`FROM`指令来指定一个基础镜像,通常是一个官方的Java镜像,例如`openjdk`。 3. 安装依赖:如果需要额外的软件或依赖,可以使用`RUN`指令来安装它们。例如,安装Maven或Gradle作为Java项目的构建工具。 4. 拷贝项目文件:使用`COPY`指令将本地的Java项目文件或目录复制到镜像中。 5. 设置工作目录:使用`WORKDIR`指令设置镜像中的工作目录。 6. 构建和运行:使用`RUN`指令执行构建命令,如`mvn package`或`gradle build`来构建Java项目。然后,使用`CMD`或`ENTRYPOINT`指令来指定容器启动时默认执行的命令。 7. 构建镜像:通过Docker命令行工具执行`docker build`命令来从Dockerfile构建镜像。 8. 运行镜像:使用`docker run`命令来运行构建好的镜像,并且可以通过命令行参数传递环境变量或其他配置。 下面是一个简单的Dockerfile示例,用于创建一个基本的Java环境镜像: ```Dockerfile # 使用Java官方镜像作为基础镜像 FROM openjdk:8-jdk-alpine # 设置工作目录 WORKDIR /app # 拷贝项目文件到工作目录 COPY . /app # 安装项目依赖,例如这里假设我们有一个构建脚本build.sh RUN chmod +x ./build.sh && ./build.sh # 设置容器启动时的默认执行命令 CMD ["java", "-jar", "target/myapp.jar"] ``` 构建和运行该Docker镜像命令可能如下所示: ```bash # 构建镜像,这里假设Dockerfile在同一目录下 docker build -t java-app . # 运行镜像 docker run -p 8080:8080 java-app ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ayzen1988

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值