docker maven插件有几种,但这里记录是com.spotify下的插件;
spotify下面有二种插件docker-maven-plugin和dockerfile-maven-plugin。
他们二者有什么区别呢?
- dockerfile-maven-plugin是docker-maven-plugin孪生弟弟;
- 插件docker-maven-plugin可以不用(docker(Dockerfile))配置文件来生产镜像(image);
解释:直接用(maven)pom.xml生产image,当然也可以用dockerfile来生产image; - 官方给出解释说docker-maven-plugin不在升级,只做BUG修复;
- 如果是写Dockerfile文件生产文件,docker-maven-plugin可以指定任意文件夹下的Dockerfile,而dockerfile-maven-plugin指定的Dockerfile文件只能放在与pom.xml文件同级;当然可以改源码修改。
为什么上面要说孪生弟弟,解释:先出来为哥后出来的为弟,docker-maven-plugin先生产出来;然后由于docker-maven-plugin被很多人玩坏了,生产者呢,就只能练一个小号了dockerfile-maven-plugin。但又不能不管docker-maven-plugin,所以生产者只对docker-maven-plugin进行BUG修复,其他的不管了。
标题基于上面的区别,所以推荐大家学习使用dockerfile-maven-plugin
此篇只写docker-maven-plugin;为什么呢。为了学习、快捷等。
docker-maven-plugin有二种方式来生产docker image。一种是基于(maven)pom.xml+Dockerfile文件来生产,另一种是直接写在(maven)pom.xml文件中。
一、 基于maven pom.xml+Dockefile
-1、例如Dockerfile文件放在项目下的docker夹中
#基于docker images中的java tag为8-jdk的镜像
FROM jdk-8u121:20190517
#把当前项目下test8080-1.0.jar 改名为test.jar 添加到镜像中
ADD test8080-1.0.jar test.jar
#指定端口,最好写与项目配置的端口
EXPOSE 8082
#在镜像中运行/test.jar包,这样在运行镜像的时候就已经启动好了test.jar
ENTRYPOINT [ "java", "-jar", "/test.jar" ]
-2、在项目基本pom.mxl文件中配置
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--绑定Docker 命令到 Maven 各个阶段-->
<!--解释:我们可以把 Docker 分为 build、tag、push,然后分别绑定 Maven 的 package、deploy 阶段-->
<executions>
<execution>
<id>build-image