Maven 入门实战(4)--dockerfile-maven 插件使用

打印 上一主题 下一主题

主题 885|帖子 885|积分 2659

本文主要介绍如何通过 dockerfile-maven-plugin 插件把 Java 服务构建成 docker 镜像;文中所使用到的软件版本:Docker 20.10.17、Java 1.8.0_341、SpringBoot 2.7.12、Maven 3.8.4、dockerfile-maven-plugin 1.4.13。
1、dockerfile-maven 插件信息

使用如下命令查看插件概要信息:
  1. mvn help:describe -DartifactId=dockerfile-maven-plugin -DgroupId=com.spotify -Dversion=1.4.13 -Ddetail
复制代码
1.1、插件目标

该插件包含 4 个目标:
目标说明默认绑定阶段
dockerfile:build构建镜像package
dockerfile:help显示帮助信息 
docker:push上传镜像deploy
docker:tag给镜像打标签,因为是根据镜像 id 来打标签的,所以需要先 dockerfile:build(会缓存镜像 id),然后才能 dockerfile:tag
mvn clean 所以信息都会清除,需要重新打包及构建镜像
package
1.2、常用配置参数

1.2.1、dockerfile:build 参数

参数说明
buildArgs定义 docker build 时的参数,可以在 Dockerfile 文件中使用这些参数
contextDirectory构建镜像的工作目录,通常是包含 Dockerfile 文件的目录,默认为:${project.basedir}
noCache构建镜像时是否使用缓存,默认:false
pullNewerImage是否自动更新基础镜像,默认:true
repository镜像的仓库源
tag镜像的标签
1.2.2、dockerfile:tag 参数

参数说明
repository镜像的仓库源
tag镜像的标签
1.2.3、dockerfile:push 参数

参数说明
 repository 镜像的仓库源
tag镜像的标签
useMavenSettingsForAuth是否使用 Maven 配置来认证,默认:false
2、dockerfile-maven 插件使用

2.1、设置 DOCKER_HOST 环境变量


2.2、新建 SpringBoot 工程
  1. <groupId>com.abc</groupId>
  2. <artifactId>demo-general</artifactId>
  3. <version>1.0.0</version>
  4. <parent>
  5.     <groupId>org.springframework.boot</groupId>
  6.     <artifactId>spring-boot-starter-parent</artifactId>
  7.     <version>2.7.12</version>
  8.     <relativePath />
  9. </parent>
复制代码
2.3、新建 Dockerfile

在该目录下新建 Dockerfile 文件:

Dockerfile 文件文件内容为:
  1. From adoptopenjdk/openjdk8:latest
  2. ARG jarFile
  3. COPY target/${jarFile} /root/${jarFile}
  4. EXPOSE 9090
  5. CMD ["java", "-jar", "/root/${jarFile}"]
复制代码
2.4、插件使用
  1. <plugin>
  2.     <groupId>com.spotify</groupId>
  3.     <artifactId>dockerfile-maven-plugin</artifactId>
  4.     <version>1.4.13</version>
  5.     <configuration>
  6.         <repository>${project.artifactId}</repository>
  7.         <tag>${project.version}</tag>
  8.         <buildArgs>
  9.             <jarFile>${project.build.finalName}.jar</jarFile>
  10.         </buildArgs>
  11.     </configuration>
  12. </plugin>
复制代码
执行 mvn package dockerfile:build 命令,在 docker 中查看镜像:

2.5、绑定 Docker 命令到 Maven 生命周期阶段
  1. <plugin>
  2.     <groupId>com.spotify</groupId>
  3.     <artifactId>dockerfile-maven-plugin</artifactId>
  4.     <version>1.4.13</version>
  5.     <configuration>
  6.         <repository>${project.artifactId}</repository>
  7.         <tag>${project.version}</tag>
  8.         <buildArgs>
  9.             <jarFile>${project.build.finalName}.jar</jarFile>
  10.         </buildArgs>
  11.     </configuration>
  12. </plugin>                        build-image            package                            build                                        tag-image            package                            tag                                        10.49.196.34:18080/test/${project.artifactId}                ${project.version}                                        push-image            verify                            push                                        10.49.196.34:18080/test/${project.artifactId}                ${project.version}                true                        
复制代码
上面的配置在打包阶段绑定了生成镜像及给镜像打标签的目标,执行 mvn package 命令后,到 docker 中查看镜像信息:

 在 verify 阶段绑定了 push 镜像的目标,在 Maven settings.xml 中配置远程仓库 Harbor 的用户名密码:
  1. <servers>
  2.   <server>
  3.     <id>10.49.196.34:18080</id>
  4.     <username>admin</username>
  5.     <password>Harbor12345</password>
  6.   </server>
  7. </servers>
复制代码
执行 mvn verify 命令后,到 Harbor 中查看镜像信息:

 
 
参考:https://github.com/spotify/dockerfile-maven
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

刘俊凯

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表