• 【备忘录】docker-maven-plugin 使用


    在使用docker-maven-plugin 插件时,经常会碰到一些奇怪的问题:
    比如:
    1、docker远程访问时,认证安全问题?
    2、dockerHost 访问地址准确性?
    3、需要多个tag时如何处理?
    4、push 到仓库时,需要保留历史记录问题?
    反正各种问题,没有找到任何相关资源能完整的说明,踩坑之后备忘,重点内容直接详细注释说明:

    <!--使用docker-maven-plugin插件-->
    <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>1.2.2</version>
        <configuration>
            <imageName>${project.artifactId}:${project.version}</imageName>
            <!-- 指定 Dockerfile 路径-->
            <dockerDirectory>${basedir}</dockerDirectory>
            <!-- 这里的tag会在build环境中打上,支持多个tag-->
            <imageTags>
                <imageTag>latest</imageTag>
            </imageTags>
            <!-- 根据认证的情况,确保是否时http或https,默认2375对应http,2376对应https-->
            <dockerHost>https://x.x.x.x:2376</dockerHost>
            <!--如果docker 已经做的安装认证,这里需要放认证客户端访问需要的几个文件:默认:ca.key,cert.pem,key.pem-->
            <!--注意几个文件的名称必须为如上几个默认的名称,比如把上面几个文件放在:/home/xxxx/cert-->
            <dockerCertPath>/home/xxxx/cert</dockerCertPath>
        <executions>
            <execution>
                <id>build-image</id>
                <phase>package</phase>
                <goals>
                    <goal>build</goal>
                </goals>
            </execution>
            <execution>
                <id>tag-image</id>
                <phase>package</phase>
                <goals>
                    <goal>tag</goal>
                </goals>
                <configuration>
                    <image>${project.artifactId}:${project.version}</image>
                    <newName>${docker.repostory}/${docker.registry.namespace}/${project.artifactId}:latest</newName>
                </configuration>
            </execution>
            <execution>
                <id>push-image</id>
                <phase>verify</phase>
                <goals>
                    <goal>push</goal>
                </goals>
                <configuration>
                    <!--如果有设置maven settting,这里是setting中的server id,如果自己的私服,也可以是任意值,请根据实际配置-->
                    <serverId>${docker.serverId}</serverId>
                    <imageName>${docker.repostory}/${docker.registry.namespace}/${project.artifactId}:latest</imageName>
                    <!--这里就可以在push 多个tag到仓库,注意前提是已经存在该tag的image-->
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                        <imageTag>latest</imageTag>
                    </imageTags>
                </configuration>
            </execution>
        </executions>
    </plugin>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
  • 相关阅读:
    【MySQL】数据库基础
    U3D外包开发框架及特点
    【Spring】Spring AOP的实现原理
    redis中value/hush
    C语言---预处理详解
    java计算机毕业设计网上花店源码+系统+mysql数据库+LW文档+部署文件
    入侵检测模型(An Intrusion-Detection Model)
    STM32 CubeMX ADC采集 单通道,多通道,内部温度(轮询,DMA,中断)(HAL库)
    【Vue入门】MVVM数据双向绑定与Vue的生命周期
    面试题-5
  • 原文地址:https://blog.csdn.net/tanlintanlin/article/details/137279810