前提:Jenkins服务器上安装好Docker,创建Jenkins任务,配置好代码来源,和Build配置:
pom.xml中添加docker-maven-plugin:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerHost>https://192.168.99.100:2376</dockerHost>
<dockerCertPath>C:\Users\Administrator\.docker\machine\machines\default</dockerCertPath>
<!--<dockerDirectory>src/main/docker</dockerDirectory>-->
<baseImage>java:8</baseImage>
<entryPoint>["java", "-jar", "/${project.build.finalName}.war"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.war</include>
</resource>
</resources>
</configuration>
</plugin>
与在本地打包相比,主要增加了dockerHost和dockerCertPath两个配置属性。
如果没有配置这两个属性,构建失败,报如下错误:
maven的docker插件在构建过程中没有找到docker虚拟机,因为构建结果产生的image必须基于一台docker虚拟机。为了解决这个错误,做了如下尝试:
1)更新docker-maven-plugin的版本到0.4.13,依然报该错。
<version>0.4.13</version>
2)安装Jenkins的Docker插件和docker-build-step插件,依然报该错。
3)根据https://stackoverflow.com/questions/35549854/maven-package-dockerbuild-connection-refused
在配置中添加dockerHost和dockerCertPath,这两个属性值可从Jenkins服务器上的Docker获取
问题解决!构建产生的镜像可以在Jenkins服务器的Docker上通过docker image ls查询到。
来源:oschina
链接:https://my.oschina.net/u/4042451/blog/3038867