io.fabric8.docker-maven-plugin插件使用
一、说明
本文记录内容主要为了在开发和测试环境快速部署使用,详细内容参考一下原博主文章:
Docker 守护进程+远程连接+安全访问+启动冲突解决办法 (完整收藏版)最强大的Docker插件 fabric8io/docker-maven-plugin
二、环境、软件情况
总共有三台服务器,一台window系统,两台linux系统,三台服务器网络互通。
- window系统:
代码开发环境:jdk 8
docker-maven-plugin:0.37.0
Maven软件:版本 3.6.3 - linux系统(192.X.X.132)
docker软件:version 19.03.12 - linux系统(140.X.X.158)
私服Harbor:版本 v2.3.2
域名:https://harbor.xxx.com
以上环境安装过程忽略,只要记录docker-maven-plugin配制与使用。
三、pom.xml文件
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.37.0</version>
<configuration>
<!-- docker主机地址 -->
<dockerHost>tcp://192.X.X.132:2375</dockerHost>
<!-- 私服Harbor地址,全局配置,如果需要推送到不同地址,可在image标签下配置
一定不要加https,否则image.name的配置会找不到这个地址 -->
<!--<registry>harbor.xxx.com</registry>-->
<!-- 私服Harbor的用户名密码,此处我是配置到了maven的setting文件中 -->
<authConfig>
<username>${harbor.username}</username>
<password>${harbor.password}</password>
</authConfig>
<!-- 镜像相关信息,用于拉取和推送到指定中央仓库 -->
<images>
<image>
<!-- 镜像名称,格式为:命名空间/仓库名称:镜像版本号
如果registry地址以https开头,则格式为:私服地址/命名空间/仓库名称:镜像版本号-->
<name>namespace/${project.build.finalName}:${v}</name>
<!-- 私服Harbor地址 -->
<registry>harbor.xxx.com</registry>
<build>
<!-- dockerfile地址,此插件也支持docker-compose配置 -->
<dockerFile>${project.basedir}/Dockerfile</dockerFile>
</build>
</image>
</images>
<buildArgs>
<!-- dockerfile参数,指定jar路径 -->
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
说明:
- ${project.build.finalName}:project.build.finalName为在build标签下自定义属性finalName
- ${v}:v是在输入mvn命令时,动态传递的版本号参数
- 此插件可能需要commons-codec依赖
四、192.X.X.132服务器配置
1.docker开通2375端口
- 打开docker.service配置文件
vi /usr/lib/systemd/system/docker.service
- 修改配置文件
#原配置
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
#新配置
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
- 重新加载配置文件并重启服务
systemctl daemon-reload
systemctl restart docker
- 检查端口是否开启
[root@root ~]# netstat -ntpl | grep 2375
tcp6 0 0 :::2375 :::* LISTEN 3444/dockerd
2. maven push报错:x509: certificate signed by unknown authority
注意:以下方法不建议在不安全网络环境使用
因为私有仓库是https开头,所以需要证书,docker检测不到证书所以会报x509错误,修改方法为让docker信任私有仓库地址,配置方法有两种。
- 修改docker.service配置文件
在ExecStart属性增加参数:–insecure-registry https://harbor.xxx.com
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
--insecure-registry https://harbor.xxx.com
- 修改daemon.json配置文件
新增参数:“insecure-registries” : [“192.168.59.100:5000”]
{
"insecure-registries" : ["harbor.xxx.com"]
}
以上方式不能同时使用,否则会报错。修改后需要重启docker。如果采用修改docker.service配置文件方式,还需要重新加载配置文件
3.服务器修改hosts文件
- 打开hosts文件
vi /etc/hosts
- 增加域名与ip映射
140.X.X.158 harbor.xxx.com
五、常用命令
先进入项目根目录,然后执行一下命令
mvn clean package
mvn docker:bulid
mvn docker:push -Dmaven.test.skip=true -Dv=1 -f pom.xml
说明:-Dv=1参数,用于pom.xml文件中的${v}使用