将插件绑定在某个phase执行,推送镜像
2024-10-20 04:07:14
文章目录
将插件绑定在某个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>
最新文章
- 阿里云直播PHP SDK如何使用
- HTML中使背景图片自适应浏览器大小
- java 线性规划 和lingo 比较
- windows下打包react-native应用程序
- Servlet/JSP-02 Servlet相关类
- Python第九章模块和包(2)
- 使用arm开发板搭建无线mesh网络(二)
- [PWA] Enable Push Notification in your web app
- [原创小知识] 如何优雅的判断 ie 版本
- CSS中zoom:1的作用
- Starling开发微信打灰机(二)
- java基础回忆、复习(一)
- 阿里云ECS服务器,CentOS 7.4配置jdk+tomcat+mysql
- nohup: failed to run command `java&#39;: No such file or directory
- Oracle 存储过程procedure之数据更新-游标
- opennebula 补丁制作与补丁升级
- [翻译]Component Registration in Script System 在脚本系统中注册组件
- 【Vue】安装(NPM 方法)
- 嵌入ARM硬核的FPGA
- BellmanFord贝尔曼-福特算法
热门文章
- springboot容器启动顺序之@Configuration ContextRefreshedEvent事件初始化 ApplicationRunner
- 轻量级 Kubernetes K3s - Github热点
- Xamarin.Forms 5.0 来了
- Head First 设计模式 —— 11. 组合 (Composite) 模式
- Array.apply(null, {length: 2}) 的理解
- GitHub README.md文本编写指南
- alter column和modify column
- 解压rpm文件
- SGA: allocation forcing component growth分析
- 源代码增强的一点说明(souce code enhance )