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

这篇具有很好参考价值的文章主要介绍了Maven 入门实战(4)--dockerfile-maven 插件使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要介绍如何通过 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 插件信息

使用如下命令查看插件概要信息:

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 环境变量

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

2.2、新建 SpringBoot 工程

<groupId>com.abc</groupId>
<artifactId>demo-general</artifactId>
<version>1.0.0</version>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.12</version>
    <relativePath />
</parent>

2.3、新建 Dockerfile

在该目录下新建 Dockerfile 文件:

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

Dockerfile 文件文件内容为:

From adoptopenjdk/openjdk8:latest
ARG jarFile
COPY target/${jarFile} /root/${jarFile}
EXPOSE 9090
CMD ["java", "-jar", "/root/${jarFile}"]

2.4、插件使用

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.4.13</version>
    <configuration>
        <repository>${project.artifactId}</repository>
        <tag>${project.version}</tag>
        <buildArgs>
            <jarFile>${project.build.finalName}.jar</jarFile>
        </buildArgs>
    </configuration>
</plugin>

执行 mvn package dockerfile:build 命令,在 docker 中查看镜像:

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

2.5、绑定 Docker 命令到 Maven 生命周期阶段

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.4.13</version>
    <configuration>
        <repository>${project.artifactId}</repository>
        <tag>${project.version}</tag>
        <buildArgs>
            <jarFile>${project.build.finalName}.jar</jarFile>
        </buildArgs>
    </configuration>
    <executions>
        <execution>
            <id>build-image</id>
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
        <execution>
            <id>tag-image</id>
            <phase>package</phase>
            <goals>
                <goal>tag</goal>
            </goals>
            <configuration>
                <repository>10.49.196.34:18080/test/${project.artifactId}</repository>
                <tag>${project.version}</tag>
            </configuration>
        </execution>
        <execution>
            <id>push-image</id>
            <phase>verify</phase>
            <goals>
                <goal>push</goal>
            </goals>
            <configuration>
                <repository>10.49.196.34:18080/test/${project.artifactId}</repository>
                <tag>${project.version}</tag>
                <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
            </configuration>
        </execution>
    </executions>
</plugin>

上面的配置在打包阶段绑定了生成镜像及给镜像打标签的目标,执行 mvn package 命令后,到 docker 中查看镜像信息:

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

 在 verify 阶段绑定了 push 镜像的目标,在 Maven settings.xml 中配置远程仓库 Harbor 的用户名密码:

<servers>
  <server>
    <id>10.49.196.34:18080</id>
    <username>admin</username>
    <password>Harbor12345</password>
  </server>
</servers>

执行 mvn verify 命令后,到 Harbor 中查看镜像信息:

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

 文章来源地址https://www.toymoban.com/news/detail-570093.html

 

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

 

 

到了这里,关于Maven 入门实战(4)--dockerfile-maven 插件使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Maven 入门实战(2)--POM

    POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,它是一个 XML 文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖等等。执行任务或目标时,Maven 会在当前目录中查找并读取 POM,获取所需的配置信息,然后执行目标。  配置说明: 节点

    2024年02月11日
    浏览(46)
  • maven:Maven Helper插件使用方法

     maven Helper是排查jar包冲突的一大利器,jar包冲突大部分是由于引用了同一个jar的不同版本而导致的。  maven Helper就是一个将pom.xml图形化界面的一个插件(总比看xml好理解),并且增加了查询依赖冲突,搜索等功能。所以它的入口就是在pom文件中 下面用 分析Jar包冲突 和 查

    2024年02月12日
    浏览(85)
  • Maven 入门实战(1)--简介及安装

    Maven 是一种软件项目管理和理解工具;它基于项目对象模型(POM),从中央位置管理项目的构建、报告和文档,并帮助开发人员轻松管理依赖项并自动化构建过程。 Maven 使用约定优于配置的原则,提倡使用一个共同的标准目录结构。 目录 说明 ${basedir} 项目根目录,存放 po

    2024年02月10日
    浏览(35)
  • 【Maven】打包插件使用详解

    本文参照官网:http://maven.apache.org/plugins 一.常用Maven打包插件: 1.spring-boot-maven-plugin:这个插件是springboot的maven插件,能够将springboot项目打包为可执行的jar/war,官网文档。 2.maven-assembly-plugin: 这个插件是maven结构定制化的打包,maven中针对打包任务而提供的标准插件,包含了以下几个插

    2024年02月13日
    浏览(33)
  • 【Maven】SpringBoot项目使用maven-assembly-plugin插件多环境打包

    1.创建SpringBoot项目并在pom.xml文件中添加maven-assembly-plugin配置 2.创建 在src/main/assembly目录下创建assembly.xml文件 3.在src/main/bin创建在linux环境启动jar包的脚本 4.配置application.yml文件 5.启动项目 6.打包 7.打包后的目录结构 8.上传到linux服务器并启动jar包 9.调用接口测试 10.源码地址

    2024年02月12日
    浏览(43)
  • 使用VSCode实现Java项目管理 Maven相关插件及配置(Maven换源)

    之前一直使用VSCode开发C、Go两种语言,现在需要对java进行学习,面对java的idea工具相对陌生,依旧想继续使用vscode作为开发工具,因此有了本篇文章 无论是idea还是vscode,最核心的功能可能就是编辑了,很多工具的优秀特性也都是来自于优秀的插件,因此首先需要配置VSCode的

    2023年04月23日
    浏览(50)
  • IDEA Maven Helper插件 使用教程

    1、选择“IntelliJ IDEA”→\\\"Preferences…\\\" 2、点击“Plugins”-“Marketplace”-输入\\\"mavn helper\\\"-点击“install”-点击“OK”完成安装 1、去到项目的pom.xml文件点击后,在pom.xlm右边显示下面多了个“Dependency Analyzer”的Tab选项,如下图所示: 2、当切换到“Dependency Analyzer”视图后,可以发现

    2024年02月09日
    浏览(43)
  • 【SpringBoot】Maven 版本管理与 flatten-maven-plugin 插件的使用及分析

    IntelliJ IDEA 2021.3 JDK 1.8.0_301 Apache Maven 3.8.1 org.codehaus.mojo:versions-maven-plugin 1.2.7 https://www.mojohaus.org/flatten-maven-plugin/ 自 Maven 3.5.0-beta-1 开始,可以使用 ${revision}, ${sha1} and/or ${changelist} 这样的变量作为版本占位符。 像这样: 或者像这样: 可以使用这样的命令: 缺点: Install / D

    2024年02月12日
    浏览(43)
  • idea Maven Helper插件使用方法

    🔊Maven Helper是一个方便检查maven冲突,图形化展示maven依赖的插件 直接setting-plugins中搜索 安装好插件后后需要重启idea 安装并重启后打开 任意pom文件,下方则会多出一个dependency analyzer选项 点击dependency analyzer Conflicts(查看冲突) 点击这个展示出来爆红的则表示有冲突的依赖

    2024年02月04日
    浏览(46)
  • 使用Maven插件将项目部署到Docker

    如图: 按需引入即可 6.1、执行install 等待执行结束后,去服务器查看镜像 docker images ,可以看到已经生成好的镜像 6.2、使用自定义网络 生产环境因为不止单独一个应用,所以尽量使用自定义网络,来保证各个容器间可以通过容器名来访问,保证数据互通 6.2、运行容器并测试

    2024年02月03日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包