将插件绑定在某个phase执行

需求:在执行mvn clean package 时,插件自动为构建Docker镜像。

实现:将插件的的goal绑定在某个phase即可。

phase和goal可以这样理解:maven命令格式是mvn phase:goal ,例如mvn package docker:build。那么,package和docker都是phase,build则是goal。

示例:

<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<excutions>
<excution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</excution>
</excutions>
<configuration>
<imageName>itmuch/discovery-eureka:0.0.1</imageName>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>

由配置可知,只需添加如下配置:

 		 <excutions>
<excution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</excution>
</excutions>

就可将插件绑定在package的phase上。也就是说,用户只需执行mvn package,就会自动执行mvn docker:build。

推送镜像

使用Maven插件推送一个Docker 镜像到Docker Hub.

1.修改Maven的全局配置文件settings.xml,在其中添加以下内容,配置Docker Hub的用户信息。

<server>
<id>docker-hub</id>
<username>用户名</username>
<password>密码</password>
<configuration>
<email>邮箱</email>
</configuration>
</server>

2.修改pom.xml。

<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<imageName>itmuch/discovery-eureka:0.0.1</imageName>
<baseImage>java</baseImage>
<entryPoint>["java", "-jar", "${project.build.finalName}.jar"]</entryPoint>
<!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources> <!-- 与maven配置文件settings.xml中配置的server.id一致,用于推送镜像 -->
<serverId>docker-hub</serverId>
</configuration>
</plugin>
</plugins>
</build>

3.执行以下命令,添加pushImage的标签,表示推送镜像。

mvn clean package docker:build -DpushImage

也可推送镜像到私有仓库,只需要将imageName指定类似如下的形式即可:

<imageName> localhost:5000/itmuch/discovery-eureka:0.0.4</imageName>

最新文章

  1. 阿里云直播PHP SDK如何使用
  2. HTML中使背景图片自适应浏览器大小
  3. java 线性规划 和lingo 比较
  4. windows下打包react-native应用程序
  5. Servlet/JSP-02 Servlet相关类
  6. Python第九章模块和包(2)
  7. 使用arm开发板搭建无线mesh网络(二)
  8. [PWA] Enable Push Notification in your web app
  9. [原创小知识] 如何优雅的判断 ie 版本
  10. CSS中zoom:1的作用
  11. Starling开发微信打灰机(二)
  12. java基础回忆、复习(一)
  13. 阿里云ECS服务器,CentOS 7.4配置jdk+tomcat+mysql
  14. nohup: failed to run command `java&#39;: No such file or directory
  15. Oracle 存储过程procedure之数据更新-游标
  16. opennebula 补丁制作与补丁升级
  17. [翻译]Component Registration in Script System 在脚本系统中注册组件
  18. 【Vue】安装(NPM 方法)
  19. 嵌入ARM硬核的FPGA
  20. BellmanFord贝尔曼-福特算法

热门文章

  1. springboot容器启动顺序之@Configuration ContextRefreshedEvent事件初始化 ApplicationRunner
  2. 轻量级 Kubernetes K3s - Github热点
  3. Xamarin.Forms 5.0 来了
  4. Head First 设计模式 —— 11. 组合 (Composite) 模式
  5. Array.apply(null, {length: 2}) 的理解
  6. GitHub README.md文本编写指南
  7. alter column和modify column
  8. 解压rpm文件
  9. SGA: allocation forcing component growth分析
  10. 源代码增强的一点说明(souce code enhance )