前言
业务代码提交后需要打包Docker镜像的步骤比较繁琐,需要在运行Docker的Linux机器上拉去最新的代码,运行docker build
打包镜像、docker tag
对镜像打标签再docker push
推送到镜像仓库,虽然可以使用IDEA IDE中的docker插件简化部署流程,但还是比较麻烦
一个名叫fabric8io/docker-maven-plugin
的Maven插件能简化这一系列操作,只需要运行maven docker:build docker:push
即可完成整个操作
步骤
前提
需已编写好Dockerfile
并存放在与pom.xml
同级的位置
配置
Maven
在最外层的pom.xml
文件的<plugins>
中加入该插件,代码如下
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.37.0</version>
<configuration>
<dockerHost>tcp://10.0.0.10:2375</dockerHost>
<registry>${registry.host}</registry>
<authConfig>
<username>${registry.username}</username>
<password>${registry.password}</password>
</authConfig>
<images>
<image>
<name>${registry.namespace}/${project.build.finalName}:${buildVersion}</name>
<registry>${registry.host}</registry>
<build>
<dockerFile>${project.basedir}/Dockerfile</dockerFile>
</build>
</image>
</images>
</configuration>
</plugin>
-
<dockerHost>
:表示运行docker相关操作的机器,不填默认为本机 -
<authConfig>
:配置镜像仓库的账号密码 -
<registry>
:配置全局镜像仓库地址,若<images>
中<image>
指定了该配置则按<image>
的配置生效 -
<images>
:定义镜像相关信息,用于拉取和推送到指定仓库<name>
:镜像名<registry>
:镜像仓库地址,若配置该项则该配置优先于全局镜像仓库地址配置<build>
:执行docker:build
时所对应的配置<dockerFile>
:指定Dockerfile
位置,让插件以Dockerfile
模式运行
${xxx}
为属性值,若未配置可以在执行mvn
命令式添加-Dxxx=xxx
Docker
开通Docker
对主机2375
端口的监听
编辑docker.service
vim /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
运行
切换到需打包的模块的目录,执行以下代码
mvm clean package -Dmaven.test.skip=true #编译Jar包
mvn docker:bulid #打包成镜像
mvn docker:push -DbuildVersion=1 #指定镜像版本并完成镜像推送
参考
io.fabric8.docker-maven-plugin插件使用_瞳孔里的阳光的博客-CSDN博客