• 将插件绑定在某个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>
    
    
  • 相关阅读:
    CentOS 8配置神奇的自动挂载光驱文件夹misc
    Linux预定义通配符及实例
    history历史记录增加显示时间和用户
    CentOS 8 命令行更改系统语言
    使用screen实现多终端同步显示
    在MobaXtrem使用CentOS 上的图形工具
    CentOS中id前10的用户
    添加硬盘后不重启使系统识别新硬盘
    bash默认启用的内部命令
    九、分页查询
  • 原文地址:https://www.cnblogs.com/aixing/p/13327488.html
Copyright © 2020-2023  润新知