分享好友 最新动态首页 最新动态分类 切换频道
Maven 插件之 docker-maven-plugin 的使用
2024-12-26 20:43

目录

Maven 插件之 docker-maven-plugin 的使用

  • docker-maven-plugin 介绍
  • 环境、软件准备
  • Demo 示例
    • 配置 DOCKER_HOST
    • 示例构建镜像
      • 指定构建信息到 POM 中构建
      • 使用 Dockerfile 构建
    • 使用命令
    • 绑定 Docker 命令到 Maven各个阶段
    • 使用私有Docker仓库地址
    • 安全认证配置
  • FAQ

1、docker-maven-plugin 介绍

在我们持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,通过镜像上线,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便。docker-maven-plugin 插件就是为了帮助我们在Maven工程中,通过简单的配置,自动生成镜像并推送到仓库中。

2、环境、软件准备

本次演示环境,我是在本机 Mac OX 上操作,以下是安装的软件及版本

  1. Docker:version 17.03.1-ce
  2. Maven:version 3.3.9
  3. Java: version 1.8.0_91
  4. docker-maven-plugin:1.0.0

注意:这里我们要测试 Java Maven 项目用 docker-maven 插件打镜像,上传镜像等操作,所以需要先安装一下 Docker、Maven、Java,这里忽略安装过程。

3、Demo 示例

3.1 配置 DOCKER_HOST

docker-maven-plugin 插件默认连接本地 Docker 地址为:localhost:2375,所以我们需要先设置下环境变量。

 

注意:如果没有设置  环境变量,可以命令行显示指定  来执行,如我本机指定 DOCKER_HOST:。

3.2 示例构建镜像

构建镜像可以使用一下两种方式,第一种是将构建信息指定到 POM 中,第二种是使用已存在的 Dockerfile 构建。
第一种方式,支持将 , , ,  以及  信息配置在 POM 中,不需要使用 Dockerfile 配置。但是如果使用  或其他 Dockerfile 中的命令的时候,需要使用第二种方式,创建一个 Dockerfile,并在 POM 中配置  来指定路径即可。

这里我们以一个 Java Maven 项目 mavendemo 作为示例演示一下。

3.2.1 指定构建信息到 POM 中构建

 

3.2.2 使用 Dockerfile 构建

 

以上两种方式执行效果是一样的,执行输出过程大致如下

 

执行完成后,使用查看生成的镜像

 

3.3 执行命令

 只执行 build 操作

 执行 build 完成后 push 镜像

 执行 build 并 push 指定 tag 的镜像
注意:这里必须指定至少一个 imageTag,它可以配置到 POM 中,也可以在命令行指定。命令行指定如下,POM 文件中指定配置如下

 

3.4 绑定Docker 命令到 Maven 各个阶段

我们可以绑定 Docker 命令到 Maven 各个阶段,我们可以把 Docker 分为 build、tag、push,然后分别绑定 Maven 的 package、deploy 阶段,此时,我们只需要执行就可以完成整个 build、tag、push操作了,当我们执行就只完成 build、tag 操作。除此此外,当我们想跳过某些步骤或者只执行某个步骤时,不需要修改 POM 文件,只需要指定跳过 docker 某个步骤即可。比如当我们工程已经配置好了自动化模板了,但是这次我们只需要打镜像到本地自测,不想执行 push 阶段,那么此时执行要指定参数就可跳过 push 操作了。

 

以上示例,当我们执行时,执行 build、tag 操作,当执行时,执行build、tag、push 操作。如果我们想跳过 docker 某个过程时,只需要

  •  跳过 build 镜像
  •  跳过 tag 镜像
  •  跳过 push 镜像
  •  跳过整个阶段

例如:我们想执行 package 时,跳过 tag 过程,那么就需要。

3.5 使用私有 Docker 仓库地址

实际工作环境中,我们需要 push 镜像到我们私有 Docker 仓库中,使用d ocker-maven-plugin 插件我们也是很容易实现,有几种方式实现

一、修改 POM 文件 imageName 操作

 

二、修改 POM 文件中 newName 操作

 

3.6 安全认证配置

当我们 push 镜像到 Docker 仓库中时,不管是共有还是私有,经常会需要安全认证,登录完成之后才可以进行操作。当然,我们可以通过命令行  登录,但是对于自动化流程来说,就不是很方便了。使用 docker-maven-plugin 插件我们可以很容易实现安全认证。

首先在 Maven 的配置文件 setting.xml 中增加相关 server 配置,主要配置 Docker registry用户认证信息。

 

然后只需要在 pom.xml 中使用 server id 即可。

 

3.7 其他参数

docker-maven-plugin 插件还提供了很多很实用的配置,稍微列举几个参数吧。

参数说明默认值build 时强制覆盖 tag,配合 imageTags 使用falsebuild 时,指定 –no-cache 不使用缓存falsebuild 时,指定 –pull=true 每次都重新拉取基础镜像falsebuild 完成后 push 镜像falsebuild 完成后,push 指定 tag 的镜像,配合 imageTags 使用falsepush 镜像失败,重试次数5push 镜像失败,重试时间10sbuild 时,指定 –rm=true 即 build 完成后删除中间容器falsebuild 时,使用最近的 git commit id 前7位作为tag,例如:image:b50b604,前提是不配置 newNamefalse

4、FAQ

1、执行 build images 时,报错情况一

 

这个是因为 Docker 服务没有启动造成的,启动 Docker 即可。

2、执行 build images 时,报错情况二

 

这个是因为镜像名字不正确,Docker 镜像名称需匹配[a-z0-9-_.]。

参考资料

  • docker-maven-plugin
最新文章
施耐德电气应对AI能耗危机,推出一系列创新解决方案
在人工智能飞速发展的今天,背后的『动力源』——数据中心,正面临着前所未有的能耗挑战。施耐德电气将在其最新发布会上揭开不少重磅解决方案的面纱,以应对不断攀升的AI能源需求。国际能源署的数据显示,从2022到2026年,全球数据中心用电
购房攻略|2024年高新区潜力盘都在哪儿?准现房楼盘有多少?
宁波目前在售的房源比较多,近期各个区域还有很多新开盘的楼盘,比如海曙区3个,如江翰府;江北区1个,如官山印小区 ;鄞州区4个,如保利汀澜瑧悦。同时,也有很多即将交付的准现房,比如海曙区2个,如万科·朗拾、余姚市2个,如铁建·明贤府、
不能复制粘贴怎么办?不能复制粘贴的原因以及破解方法
不能复制粘贴的破解方法:  1,网页中嵌入了javascript语言,通过编程手段屏蔽了复制。只要点击IE的 工具Internet选项 菜单,进入 安全 标签页,选择 自定义级别 ,将所有脚本全部禁用,然后按F5键刷新网页 ,这时你就会发现那些无法选取
高清美女写真:用AI一键生成你的梦中情人!
在这个科技飞速发展的时代,AI绘画技术逐渐走进我们的生活,许多人已经开始使用AI工具来创造独特的艺术作品。而在这其中,生成超逼真的美女写真,成为了不少爱好者关注的焦点。那么,宝子们,你是否曾幻想过通过简单几步就能获得心仪的美女
谷歌Gmail的用户开启两步验证保证安全性
  由于Google的Gmail账户经常遭到恶意攻击,因此笔者建议所有用Gmail的用户都开启两步验证,这样安全性才能得到保证,两步验证建议使用安装在智能手机的App应用(谷歌验证器)来生成验证码,不要通过短信来接受验证码,因为短信也是可以被
论坛源码 java
在这一篇文章中,我们将讨论如何开发一个简单的论坛系统。通过本项目,您将学习必要的步骤和代码实现。整个过程主要包括以下几个步骤:步骤说明1设置开发环境2创建项目结构3实现基本的后端逻辑4创建数据库模型5实现前端展示逻辑6测试功能7
骗人的!《鸿蒙语音APP》是诈骗软件,说我操作失误数据乱了要充钱修复漏洞才给提现怎么办
〖→被骗请点击进入帮助平台提现追款〗〖→被骗请点击进入帮助平台提现追款〗希望阅读此文的读者能够及时采取措施以减少损失;请及时与团队联系提供解决方案(文章上方点击添加技术员咨询快速追回)若想追回损失资产,务必仔细阅读以下内容
请问投放抖音信息流广告如何监测广告效果?
投放douyin信息流广告后,监测广告效果是优化投放策略和提升广告回报率的关键步骤。以下是一些监测douyin信息流广告效果的方法和工具:一、关键指标监测曝光量:广告在douyin平台上被展示给用户的次数,是衡量广告传播范围的重要指标。通过
漫蛙:这款蛙类主题的手游为何能吸引大量玩家
“漫蛙”是一款独具特色的手游,它不仅结合了蛙类的元素,还通过丰富的游戏玩法吸引了众多玩家。游戏中的蛙类角色,既有着丰富的个性,又充满了挑战性,让玩家在放松娱乐的同时,也能享受不小的游戏乐趣。本文将从漫蛙的玩法特点、角色设定
淘宝中小卖家虚拟产品开店教程 淘宝老卖家教你如何选款
俗话说的好,“选择大于努力”,当我们决定要去做淘宝虚拟产品的时候,摆在我们眼前的有两个问题:一如何去选款,选款的方法都有哪些?都有哪些产品是虚拟产品?二如何去选择适合自己的款。接下来我就根据自己的实操经验,详细教大家如何去
相关文章
推荐文章
发表评论
0评