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 ...
随机推荐
- (转)NSArray类的使用
NSArray的基本应用总结 NSString *string1 = @"two"; NSString *string2 = @"one"; //创建数组 NS ...
- python 设计模式之代理模式
代理模式在一般形式上是一个类函数接口.代理可以是这些事物的接口:网络连接,存储的对象,文件,或者其他资源(昂贵的或者不容易复制的). 一个众所周知的代理模式的例子就是引用计数的指针对象. 代理模式是结 ...
- Tiny 6410的Linux学习总结!
1.Tiny6410的Linux系统修改IP地址: vi /etc/eth0-setting 2.Ubuntu14.04自动以root身份登录系统: /etc/lightdm/lig ...
- 【MySQL】undo,redo,2PC,恢复思维导图
http://blog.itpub.net/22664653/viewspace-2131353/
- tiny4412 串口驱动分析一 --- u-boot中的串口驱动
作者:彭东林 邮箱:pengdonglin137@163.com 开发板:tiny4412ADK+S700 4GB Flash 主机:Wind7 64位 虚拟机:Vmware+Ubuntu12_04 ...
- java随机生成汉字
public static void main(String[] args) { String str = null; int hs, ls; Random random = new Random() ...
- 关于Android导入开源项目:Error:Unable to load class 'org.gradle.api.publication.maven.internal.DefaultMavenFa
在导入开源项目时,有可能会要求需要maven插件,并报出一下错误: 对于没有安装maven插件的开发者来说,要去下载一个maven插件也许不困难,但是,有时候可能会像我一样懒,不去下载插件,那么我们可 ...
- 淘宝开源项目之Tsar
软件介绍: Tsar是淘宝开发的一个非常好用的系统监控工具,在淘宝内部大量使用,它不仅可以监控CPU.IO.内存.TCP等系统状态,也可以监控Apache,Nginx/Tengine,Squid等服务 ...
- FormData上传文件同时附带其他参数
前端js代码: function fileSubmit() { var formData = new FormData(); formData.append(].files[]); var type ...
- 解决The prefix 'context' for element 'context:component-scan' is not bound
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...