Maven(5)--常用插件
介绍
在持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,通过镜像上线,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便。docker-maven-plugin
插件就是为了实现在Maven工程中,通过简单的配置,自动生成镜像并推送到仓库中。
使用
配置 DOCKER_HOST
docker-maven-plugin
插件需要设置 Docker 地址为。
DOCKER_HOST=unix:///var/run/docker.sock
构造镜像
构建镜像可以使用一下两种方式
将构建信息指定到 POM 中
支持将
FROM
,ENTRYPOINT
,CMD
,MAINTAINER
以及ADD
信息配置在 POM 中使用已存在的 Dockerfile 构建。
上述不支持的必须使用Dockerfile
插件配置见附录
执行命令
mvn clean package docker:build #只执行 build 操作mvn clean package docker:build -DpushImage #执行 build 完成后 push 镜像mvn clean package docker:build -DpushImageTag #执行 build 并 push 指定 tag 的镜像mvn docker:build -DdockerImageTags=1.0.0-dev docker:push #镜像指定tag
注意:这里必须指定至少一个 imageTag,它可以配置到 POM 中,也可以在命令行指定。
绑定Docker 命令到 Maven 各个阶段
我们可以绑定 Docker
命令到 Maven
各个阶段,我们可以把 Docker 分为 build
、tag
、push
,然后分别绑定 Maven 的 package
、deploy
阶段,此时,我们只需要执行mvn deploy
就可以完成整个 build、tag、push操作了,当我们执行mvn build就只完成 build、tag 操作。除此此外,当我们想跳过某些步骤或者只执行某个步骤时,不需要修改 POM 文件,只需要指定跳过 docker 某个步骤即可。比如当我们工程已经配置好了自动化模板了,但是这次我们只需要打镜像到本地自测,不想执行 push 阶段,那么此时执行要指定参数-DskipDockerPush
就可跳过 push 操作了。
如果我们想跳过 docker 某个过程时,只需要:
-DskipDockerBuild
跳过 build 镜像-DskipDockerTag
跳过 tag 镜像-DskipDockerPush
跳过 push 镜像-DskipDocker
跳过整个阶段
安全认证配置
当我们 push 镜像到 Docker 仓库中时,不管是共有还是私有,经常会需要安全认证,登录完成之后才可以进行操作。当然,我们可以通过命令行 docker login -u user_name -p password docker_registry_host 登录,但是对于自动化流程来说,就不是很方便了。使用 docker-maven-plugin 插件我们可以很容易实现安全认证。
首先在 Maven 的配置文件 setting.xml 中增加相关 server 配置,主要配置 Docker registry用户认证信息。
<servers><server><id>docker-registry</id><username>user</username><password>12345678</password><configuration><email>xxxx@xxxx</email></configuration></server>
</servers>
然后只需要在 pom.xml
中使用 server id
即可。
然后只需要在 pom.xml 中使用 server id 即可。
附录
pom
<plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><configuration><imageName>${docker.image.prefix}/${project.name}:${project.version}-dev</imageName><!-- dockerfile所在目录 --><dockerDirectory>${basedir}/src/main/docker</dockerDirectory><dockerHost>${docker.host}</dockerHost><!-- maven settings.xml 中配置的docker 仓库的 server --><serverId>docker-registry</serverId><!-- 以下是docker build 的命令 《《《《《 --><baseImage>java</baseImage><maintainer>docker_maven docker_maven@email.com</maintainer><workdir>/ROOT</workdir><cmd>["java", "-version"]</cmd><entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint><!-- 》》》》》》 --><resources><resource><targetPath>/ROOT</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></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><image>${docker.image.prefix}/${project.name}:${project.version}-dev</image><newName>${docker.image.prefix}/${project.name}:${project.version}-RELEASE</newName></configuration></execution><execution><id>push-image</id><phase>deploy</phase><goals><goal>push</goal></goals><configuration><imageName>${docker.image.prefix}/${project.name}:${project.version}-RELEASE</imageName></configuration></execution></executions></plugin>
参数
docker-maven-plugin 插件还提供了很多很实用的配置:
参数 | 说明 | 默认值 |
---|---|---|
true | build 时强制覆盖 tag,配合 imageTags 使用 | false |
true | build 时,指定 –no-cache 不使用缓存 | false |
true | build 时,指定 –pull=true 每次都重新拉取基础镜像 | false |
true | build 完成后 push 镜像 | false |
true | build 完成后,push 指定 tag 的镜像,配合 imageTags 使用 | false |
5 | push 镜像失败,重试次数 | 5 |
10 | push 镜像失败,重试时间 | 10s |
true | build 时,指定 –rm=true 即 build 完成后删除中间容器 | false |
true | build 时,使用最近的 git commit id 前7位作为tag,例如:image:b50b604 。前提是不配置 newName | false |
参考
https://github.com/spotify/docker-maven-plugin
Maven(5)--常用插件相关推荐
- maven 常用插件3
maven 常用插件3 转载:http://www.cnblogs.com/dennyzhangdd/p/5831112.html 1.根据项目类型打包:jar/war打包插件. 首先看<pac ...
- Maven 配置文件 POM 的常用插件配置代码
Maven 配置文件 POM 的常用插件配置代码 普通 将 Maven 多模块依赖集成打进一个 JAR 包(方法 1) 将 Maven 多模块依赖集成打进一个 JAR 包(方法 2) 生成单入口类 J ...
- maven常用插件配置
常用插件配置详解 Java代码 <!-- 全局属性配置 --> <properties> <project.build.name>tools</proj ...
- 大家都用什么Maven插件?及本人的几个常用插件分享
2019独角兽企业重金招聘Python工程师标准>>> 大家都用什么Maven插件?及本人的几个常用插件分享 博客分类: Java框架 maven Spring Flex Myecl ...
- Maven常用插件介绍及如何打一个瘦jar包
目录 零:说在前面 一:常用插件的介绍 二:常用插件的对比 三:打一个瘦jar包 3.1:背景 3.2:解决方案 四:插件应用举例 4.1:maven-jar-plugin 举例及部分说明 4.2:m ...
- maven常用插件详解
1. 简介 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的.进一步说, ...
- Maven 常用插件
1.Maven 打包package插件 <build><plugins><plugin><groupId>org.apache.maven.plugin ...
- androidstudio mac mini_GitHub - jp1017/AndroidStudioPlugins: Android Studio 常用插件及浅释
AndroidStudioPlugins Android Studio 常用插件及浅释 这里给出几个平时常用的as插件,方便我们的开发.点击标题就直接可以进入插件的github源码查看. as第一大插 ...
- python测试用例管理_Python测试框架Pytest的常用插件测试报告
原标题:Python测试框架Pytest的常用插件测试报告 一.pytest-html 生成 html 测试报告 要求:Python 3.6+ 安装:pip install pytest-html 文 ...
- maven之打包插件(maven-assembly-plugin,maven-shade-plugin与maven-assembly-plugin)
一. 介绍 maven提供的打包插件有如下三种: plugin function maven-jar-plugin maven 默认打包插件,用来创建 project jar maven-shade- ...
最新文章
- Spring Boot 实现接口幂等性的 4 种方案!还有谁不会?
- python结束不退出_Python 基本功: 1. Hello world
- MySQL 绿色版安装方法图文教程
- Canal实时同步数据到RocketMQ
- C++之string类
- 考试系统(未完成的小程序)
- 【caffe-Windows】微软官方caffe之 matlab接口配置
- 从工程文化和运维理念理解Netflix
- Linq的优点以及注意事项
- SpringBoot使用CommandLineRunner和ApplicationRunner执行初始化业务
- C# GDI+ 生成自定义进度条
- java Flink使用addSink方法保存流到mysql数据库中
- 为什么说ES6的class是语法糖?
- thinkphp开启子域名无法正常访问_内网穿透之动态域名解析_DDNS(二)
- ios自建服务器降级,苹果系统怎样降级?iOS11降级至iOS10的方法
- Keil5的详细安装教程
- 二进制,十进制,十六进制转化
- 接收微信支付通知php代码,微信支付开发告警通知实例
- 2021牛客寒假算法基础集训营1 C 无根树问题的处理策略 前序后序遍历 奇偶匹配 DFS
- vue中用canvas 画一个六边形 类似蜂窝形的功能导航主菜单
热门文章
- 数字图像处理之频率域图像增强
- 网络摄像头2 mjpg_streamer流程,编译
- linux【报错】userdel: user xiaoming is currently used by process 4713解决
- centos6.9下安装composer
- Maven对插件进行全局设置
- SchemaCrawler 9.3 发布
- 让人期待的2011年度最佳 jQuery 插件发布啦
- Jscript中window.setInterval和window.setTimeout的区别
- Tomcat5.5 配置mysql数据库连接池
- 为啥有的程序员不爱说话,却表达能力爆表?(附教程)