一、前言
spring boot 2.4.0 的spring-boot-maven-plugin
插件提供了一键构建镜像的功能,不需要自己写Dockerfile文件即可构建镜像,关于插件是如何实现自动构建镜像的,可以查看下面的官方文档,这里只是简单介绍如何使用此插件实现一键构建镜像。
二、使用spring-boot-maven-plugin构建镜像
maven插件有两种方式构建镜像:
- 插件与本地docker daemon通信来构建镜像,需要在windows安装docker
- 插件使用远程连接与docker daemon通信来构建镜像,需要远程服务器上面的docker开启远程连接
1、插件与本地docker daemon通信来构建镜像
在pom.xml中添加如下插件配置:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<name>registry.cn-shenzhen.aliyuncs.com/仓库名称/${project.artifactId}:${project.version}</name>
<!-- 执行完build 自动push -->
<publish>true</publish>
<!-- 拉取镜像的策略,可选的值:ALWAYS, NEVER, IF_NOT_PRESENT -->
<pullPolicy>IF_NOT_PRESENT</pullPolicy>
</image>
<!--配置构建宿主机信息,本机不用配置-->
<docker>
<publishRegistry>
<username>user</username>
<password>secret</password>
<url>registry.cn-shenzhen.aliyuncs.com</url>
</publishRegistry>
</docker>
</configuration>
</plugin>
2、插件与远程docker daemon通信来构建镜像
需要在插件配置中添加<host>
标签并填写远程docker daemon的连接地址,pom.xml的配置如下:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<name>registry.cn-shenzhen.aliyuncs.com/仓库名称/${project.artifactId}:${project.version}</name>
<!-- 执行完build 自动push -->
<publish>true</publish>
<!-- 拉取镜像的策略,可选的值:ALWAYS, NEVER, IF_NOT_PRESENT -->
<pullPolicy>IF_NOT_PRESENT</pullPolicy>
</image>
<!--配置构建宿主机信息,本机不用配置-->
<docker>
<!--远程docker daemon的连接地址和端口-->
<host>tcp://192.168.99.100:2375</host>
<!--如果使用https协议需要设置为true-->
<tlsVerify>false</tlsVerify>
<publishRegistry>
<username>user</username>
<password>secret</password>
<url>registry.cn-shenzhen.aliyuncs.com</url>
</publishRegistry>
</docker>
</configuration>
</plugin>
执行如下命令开始自动构建镜像,并推送到阿里云镜像仓库,需要配置自己仓库的用户名和密码:
mvn spring-boot:build-image
开始自动构建镜像,在构建的时候需要拉取一下其他镜像来构建,如下图所示,所以需要等待一段时间才能构建成功。
参考文档:
官方文档:https://docs.spring.io/spring-boot/docs/2.4.0/maven-plugin/reference/htmlsingle/#build-image