docker-maven-plugin
顾名思义,docker-maven-plugin是一个docker的maven插件,用来执行docker镜像的制作和上传,他的地址是https://github.com/spotify/docker-maven-plugin,里面有详细的说明
有两种方式
1、使用Dockerfile
2、不使用Dockerfile,直接在pom中定义
第二种方式有一些局限性,有一些Dockerfile的指令是不支持的。
介绍两种方式之前,需要先修改maven的setting文件,如果要上传镜像到私服,就必须要修改此文件。
<servers>
<server>
<id>harbor</id>
<username>admin</username>
<password>Harbor12345</password>
<configuration>
<email>*******</email>
</configuration>
</server>
</servers>
在pom文件中增加两个属性
<properties>
<docker.registry>10.10.20.202/library</docker.registry>
<tag>v7</tag>
</properties>
docker.registry用来定义docker私服的前缀
tag用来定义标签
以下分别介绍这两种方式,
【第一种:使用Dockerfile】
1、在java工程根目录下创建Dockerfile,文件内容如下。
FROM 10.10.20.202/library/tomcat8:v1
ADD target/portal-0.0.-SNAPSHOT /root/apache-tomcat-8.0./webapps/portal
ENTRYPOINT /root/apache-tomcat-8.0./bin/catalina.sh run
WORKDIR /root/apache-tomcat-8.0./webapps
2、在pom文件中,增加插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
<configuration>
<dockerDirectory>${project.basedir}</dockerDirectory>
<imageName>${docker.registry}/${project.artifactId}:${tag}</imageName>
</configuration>
</execution>
<execution>
<id>push-image</id>
<phase>deploy</phase>
<goals>
<goal>push</goal>
</goals>
<configuration>
<serverId>harbor</serverId>
<imageName>${docker.registry}/${project.artifactId}:${tag}</imageName>
</configuration>
</execution>
</executions>
</plugin>
上述插件将创建镜像、打标签与package绑定,将上传镜像与deploy绑定,其中dockerDirectory定义了Dockerfile所在的路径,当使用dockerDirectory这个标签时,诸如baseImage、entryPoint等标签就不在生效了。
【第二种:不使用Dockerfile】
1、在pom文件中增加插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
<configuration>
<baseImage>10.10.20.202/library/tomcat8:v1</baseImage>
<resources>
<resource>
<targetPath>/root/apache-tomcat-8.0./webapps/emp-portal</targetPath>
<directory>${project.build.directory}/${project.build.finalName}</directory>
</resource>
</resources>
<imageName>${docker.registry}/${project.artifactId}:${tag}</imageName>
<entryPoint>["/root/apache-tomcat-8.0.18/bin/catalina.sh", "run"]</entryPoint>
</configuration>
</execution>
<execution>
<id>push-image</id>
<phase>deploy</phase>
<goals>
<goal>push</goal>
</goals>
<configuration>
<serverId>harbor</serverId>
<imageName>${docker.registry}/${project.artifactId}:${tag}</imageName>
</configuration>
</execution>
</executions>
</plugin>
与第一种方式不同的地方,在于创建镜像的定义中,增加了一些标签
baseImage:生命基础镜像,相当于Dockerfile中的FROM
recerouse:说明将哪个目录拷贝到镜像的哪个路径下
entrypoint:说明镜像启动后执行什么指令
docker-maven-plugin的更多相关文章
- 使用Docker Maven 插件进行镜像的创建以及上传至私服
1.在进行服务容器化部署的时候,需要将服务以及其运行的环境整个打包做成一个镜像,打包的过程有两种办法,第一种是首选通过maven打成jar包,然后再编写dockerfile,执行docker buil ...
- 学习Maven之Cobertura Maven Plugin
cobertura-maven-plugin是个什么鬼? cobertura-maven-plugin是一个校验单元测试用例覆盖率的工具,可以生成一个测试覆盖率报告,可以给单元测试用例编写提供参考. ...
- Maven实现Web应用集成測试自己主动化 -- 部署自己主动化(WebTest Maven Plugin)
上篇:Maven实现Web应用集成測试自己主动化 -- 測试自己主动化(WebTest Maven Plugin) 之前介绍了怎样在maven中使用webtest插件实现web的集成測试,这里有个遗留 ...
- 解决Jetty Maven Plugin:Please initialize the log4j system properly(转)
解决Jetty Maven Plugin:Please initialize the log4j system properly.Jetty Maven Plugin环境: <plugin> ...
- Spring Boot Maven Plugin(二):run目标
简介 Spring Boot Maven Plugin插件提供spring boot在maven中的支持.允许你打包可运行的jar包或war包. 插件提供了几个maven目标和Spring Boot ...
- Spring Boot Maven Plugin(一):repackage目标
简介 Spring Boot Maven Plugin插件提供spring boot在maven中的支持.允许你打包可运行的jar包或war包. 插件提供了几个maven目标和Spring Boot ...
- Spring Boot Maven Plugin打包异常及三种解决方法:Unable to find main class
[背景]spring-boot项目,打包成可执行jar,项目内有两个带有main方法的类并且都使用了@SpringBootApplication注解(或者另一种情形:你有两个main方法并且所在类都没 ...
- Error : Weblogic Maven Plugin deployment WebLogic 12c
Error : Weblogic Maven Plugin deployment i want to use weblogic-maven-plugin in my maven project in ...
- tomcat:run和tomcat7:run的区别,以及Apache Tomcat Maven Plugin 相关
起因: 同事部署的maven项目,之前使用 jetty,现在切换到 tomcat,但是他使用的命令是 tomcat:run ,而不是 tomcat7:run,能启动,但出现问题了. 于是搜索了一番,想 ...
- Versions maven plugin 修改版本
使用versions maven plugin插件,批量修改项目各模块的版本号,灵活推进或回退版本,避免主干每次更新代码,立即对所有分支产生影响. https://blog.csdn.net/sunz ...
随机推荐
- [BZOJ 1037] 生日聚会Party
Link: BZOJ 1037 传送门 Solution: 由于对任意一段都有要求,于是我们对于所有前缀考虑其后缀不超过$k $即可: 设$dp[i][j][x][y]$为前$i$个人中有$j$个男孩 ...
- 四. Java继承和多态10. Java Object类
Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来. 定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类.例如: p ...
- SQL语句原理与高效SQL语句(转)
做软件开发的programers,大部分都离不开跟数据库打交道,特别是erp开发的,跟数据库打交道更是频繁,存储过程动不动就是上千行,如果数据量大,人员流动大,那么还能保证下一段时间系统还能流畅的运行 ...
- Ubuntu 16.04使用“从互联网自动获取”时间无法写入硬件BIOS的奇怪问题
目前发现的就是这个问题,只能手动同步到BIOS. 如果是手动设置过时间,那么可以正常同步到BIOS. 而如果切换到从互联网自动获取时间时,是不能同步到BIOS的,但是界面上的时间确实最新的. 并且这个 ...
- WPF中的DesignMode判断
WPF中提供你一个类似WinForm的DesignMode属性的方法来判断当前是否处于设计器模式: bool IsInDesignMode { get { return Desig ...
- ncurses简单的一个多窗体程序
#include <ncurses.h> #include <string.h> #include <iostream> #include <stdlib.h ...
- python scrapy简单爬虫记录(实现简单爬取知乎)
之前写了个scrapy的学习记录,只是简单的介绍了下scrapy的一些内容,并没有实际的例子,现在开始记录例子 使用的环境是python2.7, scrapy1.2.0 首先创建项目 在要建立项目的目 ...
- ElasticSearch 相关性
1.相关性 ElasticSearch检索结果是按照相关性倒序排列的,相关性是什么,相关性又是如何计算的?每个文档都有相关性评分,用一个正浮点数字段 _score 来表示 . _score 的评分越高 ...
- zabbix自定义监控项二
为zabbix增加支持传参的自定义监控项 例如使用zabbix来监控tcp的12种状态 tcp的12种状态可以通过man netstat来找到,即 LISTEN:等待从任何远端TCP 和端口的连接请求 ...
- 2017.3.31 spring mvc教程(二)核心流程及配置详解
学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...