maven-docker-plugin的使用

io.fabric8使用

为了使jenkins能运行mvn命令就能实现容器的build,remove,run,使用了io.fabric8这款插件,
运行mvn clean package docker:build 报错

failed: stat /var/lib/docker/tmp/docker-builder455335933/opt: no such file or directory

一般是dokcerfile的问题
去target目录下才发现
文件路径是 target\docker\blogapi\tmp,里面有一个docker-build.tar
在这里插入图片描述
这个tmp目录是临时挂载卷在/var/lib/docker/tmp/也就是报的错误的路径,
因为dockerfile里面的COPY和ADD的相对路径不是以maven/ 开头所以no such file or directory
我还傻傻的 target/开头,原来mvn docker:build已经切换的工作的根路径了

jenkins配合 io.fabric8的问题

在docker:run 这里有个坑,docker:run是在前台执行,也就是说,它并不能像使用docker一下直接docker start -d来实现后台运行,他会阻止后续指令执行,所以要把它放在最后一个执行才不会影响构建
但是jenkins毫无疑问卡在这步返回不了,maven超时的时候退出,并返回构建失败,但是这不会影响远端的容器运行

tls访问问题

由于我服务器docker守护进程开放的端口9876,所以dockerhost最好使用设置https开头,
因为tcp开头只能访问2375,2376,http则根本访问不了

贴一个我的plugin配置

        <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.26.0</version>
            <!--全局配置-->
            <configuration>
<!--                <dockerHost>tcp://localhost:2375</dockerHost>-->
                <dockerHost>https://106.53.223.87:9876</dockerHost>
                <!--docker远程访问所需证书地址,如果docker远程主机没有启用TLS验证则不需要配证书-->
                <certPath>/var/jenkins_home/cert/</certPath>

                <!--镜像相关配置,支持多镜像-->
                <images>
                    <!-- 单个镜像配置 -->
                    <image>
                        <!--镜像名(含版本号)-->
                        <name>blogapi:${maven.build.timestamp}</name>
                        <!--别名:用于容器命名和在docker-compose.yml文件只能找到对应名字的配置-->
                        <alias>${project.name}</alias>
                        <!--镜像build相关配置-->
                        <build>
                            <!--使用dockerFile文件-->
                            <dockerFile>Dockerfile</dockerFile>
                            <!--将jar包拷贝到docker build目录中-->
                            <assembly>
                                <descriptorRef>artifact</descriptorRef>
                            </assembly>
                        </build>
                        <run>
                            <!---->
                            <namingStrategy>alias</namingStrategy>
                            <ports>
                                <port>8088:8088</port>
                            </ports>
                        </run>
                    </image>
                </images>
            </configuration>
            <dependencies>
                <!--该插件需要这个依赖-->
                <dependency>
                    <groupId>commons-codec</groupId>
                    <artifactId>commons-codec</artifactId>
                    <version>1.11</version>
                </dependency>
            </dependencies>
        </plugin>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值