顾名思义,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:说明镜像启动后执行什么指令

最新文章

  1. lua-resty-websocket安装和测试
  2. 码农干货系列【20】--add gtTime to Promise.js
  3. SVN_限制注释长度
  4. WPF PRISM开发入门一( 初始化PRISM WPF程序)
  5. Linux(Centos)下jdbc连接oracle速度超慢的问题
  6. jar包双击执行程序
  7. 编译maxscale
  8. &lt;转&gt;安卓软件测试的几个要点
  9. JavaEE web.xml 中ContextLoaderListener的解析
  10. 一周学会Mootools 1.4中文教程:(4)类型
  11. Python数据结构-字典
  12. Oil Deposits
  13. web项目错误页面友好处理404,500等
  14. Eureka客户端注册多网卡下IP选择问题
  15. 调整LaTeX文档页面的大小
  16. sublime3安装ctags追踪插件
  17. SpringBoot2.x使用Dev-tool热部署
  18. H5缩放效果的问题和缓存问题
  19. mysql5.7 主从同步
  20. MariaDB 连接查询与子查询(6)

热门文章

  1. [JSOI2009] 有趣的游戏
  2. 八. 输入输出(IO)操作1.输入输出基本概念
  3. IO模型同步与异步阻塞与非阻塞的区别
  4. 彻底理解Javascript 中的 Promise(-------------------------------***---------------------------------)
  5. Makefile之字符串函数
  6. 重新认识被人遗忘的HTTP头注入
  7. ios开发中APP底部上滑不能调出如WiFi、蓝牙、播放等的设置页面的解决的方法
  8. Java虚拟机内存分配和回收策略
  9. HTTP请求和响应2:方法(Method)
  10. iOS开发 最近开发了蓝牙模块,在此记录总结一下(转载)