在使用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>