分享好友 最新动态首页 最新动态分类 切换频道
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
最新文章
谷歌浏览器(Google)app下载 15.35.40.28.arm64
  【软件介绍】  谷歌浏览器(Google)app(易速软件园提供下载)是一款能轻松的开启随时进行网页浏览的软件。谷歌浏览器(Google)app用户可以利用谷歌帐号对浏览器的设置、书签、密码等数据进行同步,让你在不同的设备上使用浏览器也
苏州百度竞价托管代运营服务收费标准及行业平均价格_苏州百度推广代运营
在当今数字化营销的时代,竞价托管代运营服务已成为许多企业提升在线广告效果的重要选择。然而,其收费标准因多种因素而异,了解行业平均价格对于企业做出明智的决策至关重要。苏州百度竞价托管代运营服务收费标准及行业平均价格_苏州百度
用AI绘画神器轻松生成超逼真美女写真!
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 在这个数码科技飞速发展的时代,像素与画笔早已不再是艺术创作的唯一条件。可想而知,AI绘画
网站建设免费书/seo优化方案报价
转载 2016年02月24日 13:58:30 5605 博客分类: 性能及调优LinuxJava   对于jps较熟悉可以直接查看第二部分的分析   1、jps的作用 jps类似linux的ps命令,不同的是ps是用来显示进程,而jps只显示java进程,准
游戏行业迎来AI变革:大模型助力创意与效率双提升
2024年注定是一个充满机遇与挑战的年份。在大模型技术不断成熟的背景下,游戏行业正经历着前所未有的变革。这一轮科技创新,不仅仅是为了降本增效,更多的是为了探索创意的新边界。根据南方财经全媒体记者吴立洋在北京的报道,人工智能(AI
成都微博热搜榜怎么做
成都微博热搜榜怎么做一:话题策划-微博热搜榜根据客户需求,策划出符合平台规则的创意,提高上榜率二:微博热搜执行方案成都微博热搜榜话题营销流程:1.需要客户提供项目背景、核心诉求、产品资料(主要卖点)等资料2.根据客户需求策划冲榜
用AI生成美女写真!简单易用的教程与工具推荐
DALL-E:这一AI工具由OpenAI开发,以其令人惊艳的图像生成能力而闻名。用户只需提供描述,系统便能生成多种样式的美女图片,效果多样且极具艺术感。然而,生成高质量的图像需要经过多次尝试,用户可能需耐心调整描述才能达到理想效果。Midj
【Excel视频教学】rank函数制作成绩排名
【推荐阅读】大家好,本视频主要讲解利用rank函数制作成绩排名首先我们来看一下案例,在本案例中有253条数据需要对这253条数据进行排名,在排名制作过程中需要注意的是成绩并列的情况,比如说两个80分为并列第二名,那下一位就是第四名。好
淘宝店铺怎么做老顾客营销?
1、结合买家心理和收货期待,玩好宣传单在日常生活中,当我们收到宣传单可能不太会多关注,反而网上购物收到的货会比较关注,因为会对自己买的东西抱有强烈的期待,正是由于这份收货心理,关于买的产品,一些相关的传单会有很大几率去看。
Python 人狗大 CSDN:一个 Python 开发者的学习交流社区
Python 人狗大 CSDN 社区汇聚了来自世界各地的 Python 爱好者和专业开发者。无论是初出茅庐的新手,还是经验丰富的高手,都能在这里找到自己的位置。对于新手来说,这里是他们开启 Python 编程之旅的起点。丰富的入门教程、详细的基础知识
相关文章
推荐文章
发表评论
0评