构建一个包含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、测试验证新镜像。

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

  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要将Java项目打包为Docker镜像,你可以按照以下步骤操作: 1. 创建一个Dockerfile:在项目根目录中创建一个名为"Dockerfile"的文件。你可以使用任何文本编辑器打开该文件。 2. 指定基础镜像:在Dockerfile中,使用以下命令指定一个适合Java应用程序的基础镜像。例如,可以选择openjdk镜像: ``` FROM openjdk:8-jdk-alpine ``` 这个示例使用了基于Alpine Linux的OpenJDK 8。 3. 复制应用程序文件:使用以下命令Java应用程序文件复制到镜像中的特定目录。假设你的Java应用程序的可执行JAR文件在根目录的"target"文件夹中,可以使用以下命令: ``` COPY ./target/your-application.jar /app/your-application.jar ``` 这个示例将"your-application.jar"复制到镜像中的"/app"目录。 4. 设置工作目录:使用以下命令设置镜像的工作目录: ``` WORKDIR /app ``` 这个示例将工作目录设置为"/app"。 5. 安装依赖:如果你的Java应用程序有其他依赖项(如配置文件、静态资源等),可以使用以下命令将它们复制到镜像中。 ``` COPY ./path/to/dependencies /app/dependencies ``` 6. 安装项目依赖:如果你的Java应用程序使用了Maven或Gradle等构建工具,可以使用以下命令将项目依赖项复制到镜像中。 ``` COPY ./pom.xml /app/pom.xml RUN mvn dependency:resolve ``` 这个示例将"pom.xml"文件复制到镜像中,并使用Maven解析依赖项。 7. 暴露端口:如果你的Java应用程序监听了某个特定端口,可以使用以下命令镜像中暴露该端口。 ``` EXPOSE 8080 ``` 这个示例将端口8080暴露出来。 8. 启动应用程序:使用以下命令定义容器启动时执行的指令。 ``` CMD ["java", "-jar", "your-application.jar"] ``` 这个示例将执行"java -jar your-application.jar"来启动应用程序。 9. 构建镜像:在包含Dockerfile的项目根目录中,使用以下命令构建镜像: ``` docker build -t your-image-name . ``` 这个示例将构建一个名为"your-image-name"的镜像。 10. 运行容器:使用以下命令运行容器: ``` docker run -p 8080:8080 your-image-name ``` 这个示例将使用刚刚构建镜像在本地的8080端口上运行容器。 这样,你就成功将Java项目打包为Docker镜像。请根据你的实际需求进行相应修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ayzen1988

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

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

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

打赏作者

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

抵扣说明:

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

余额充值