关于java服务构建打包成docker镜像问题 ?
关于java服务构建打包成docker镜像
1、构建命令
构建命令:
mvn clean install dockerfile:build -Ddockerfile.tag=${BUILD_TAG} dockerfile:push
作用:
1、打包成jar包
2、build构建成docker镜像(根据变量传递标签生成版本号)
3、推送到docker镜像仓库
以下是这条命令的执行流程:
clean:清理项目的输出目录(target文件夹)。install:构建项目并将其安装到本地 Maven 仓库。dockerfile:build:根据项目的Dockerfile构建 Docker 镜像,并使用-Ddockerfile.tag=${BUILD_TAG}指定镜像的标签。dockerfile:push:将构建好的 Docker 镜像推送到配置的 Docker 仓库。
2、关于变量
上面的命令步骤有些运维工程师估计看不懂、下面大家可以看一下这篇博客:
https://blog.csdn.net/sanshizhang/article/details/104511353
3、主要讲解
看完大家估计就懂了、但是对 (JAR_FILE )估计还是有些疑问 我来主要讲解一下 JAR_FILE
下面是博主文中的截图

在 Maven 项目中,Dockerfile 是用于定义 Docker 镜像构建过程的脚本文件。在构建 Docker 镜像时,我们通常需要将构建好的 JAR 文件(Java 应用程序的打包文件)添加到 Docker 镜像中。
在提供的 Dockerfile 示例中,有一行代码如下:
dockerfile
ARG JAR_FILE
这行代码定义了一个名为 JAR_FILE 的参数,这个参数可以在构建 Docker 镜像时通过命令行指定。其目的是为了动态地指定要添加到 Docker 镜像中的 JAR 文件的路径。
接下来,Dockerfile 中有一行代码如下:
dockerfile
ADD ${JAR_FILE} /app.jar
这行代码的作用是将指定的 JAR 文件(由 JAR_FILE 参数指定)添加到 Docker 镜像中的 /app.jar 路径下。
为了在 Maven 构建过程中动态地指定 JAR_FILE 参数的值,我们需要在 pom.xml 文件中配置 dockerfile-maven-plugin 插件,并设置 buildArgs 属性。具体如下:
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.10</version>
<executions>
<execution>
<id>default</id>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE> #这里是相对目录
<!-- 这里是相对目录 -->
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
在上述配置中,`` 标签内定义了一个 JAR_FILE 参数,其值设置为 ${project.build.finalName}.jar。${project.build.finalName} 是 Maven 提供的一个内置属性,表示构建的 JAR 文件的最终名称(通常是 artifactId-version.jar 的形式)。
总结:
Dockerfile中的ARG JAR_FILE定义了一个参数,用于指定要添加到 Docker 镜像中的 JAR 文件。ADD ${JAR_FILE} /app.jar将指定的 JAR 文件添加到 Docker 镜像中。pom.xml文件中的 `` 配置动态地指定了JAR_FILE参数的值,使其指向构建生成的 JAR 文件。
通过这种方式,我们可以在 Maven 构建过程中动态地将生成的 JAR 文件添加到 Docker 镜像中,从而实现自动化的 Docker 镜像构建。

浙公网安备 33010602011771号