• 将插件绑定在某个phase执行,推送镜像


    将插件绑定在某个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>
    
    
  • 相关阅读:
    matlab学习笔记之求解线性规划问题和二次型问题
    matlab学习笔记之基础知识(一)
    jQuery中获取特定顺序子元素(子元素种类不定)的方法
    几种常见网页布局设计
    jQuery中删除节点方法remove()、detach()、empty()分析
    jQuery实现复选框全选、全不选、反选问题解析
    window.onload和$(document).ready()比较
    redis+php微博功能的redis数据结构设计总结(四)
    redis+php实现微博功能(三)
    redis+php实现微博功能(二)
  • 原文地址:https://www.cnblogs.com/aixing/p/13327488.html
Copyright © 2020-2023  润新知