对于最新的稳定版本,请使用 Spring Boot 3.5.5spring-doc.cadn.net.cn

打包 OCI 映像

该插件可以使用云原生 Buildpack (CNB) 从 jar 或 war 文件创建 OCI 映像。 可以在命令行上使用build-image目标。 这可以确保在创建映像之前运行包生命周期。spring-doc.cadn.net.cn

出于安全原因,镜像以非 root 用户身份构建和运行。 有关更多详细信息,请参阅 CNB 规范

最简单的入门方法是调用mvn spring-boot:build-image在一个项目上。 只要packagephase 被调用,如以下示例所示:spring-doc.cadn.net.cn

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<executions>
				<execution>
					<goals>
						<goal>build-image-no-fork</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>
build-image-no-fork将目标绑定到包生命周期时。 这个目标类似于build-image但不会分叉生命周期以确保package已经运行了。 在本节的其余部分,build-image用于引用build-imagebuild-image-no-fork目标。
虽然 buildpack 从可执行存档运行,但没有必要执行repackage目标,因为必要时会自动创建可执行存档。 当build-image重新打包应用程序时,它应用与repackage目标,即可以使用排除选项之一排除依赖项。 这spring-boot-devtoolsspring-boot-docker-compose默认情况下,模块会自动排除(您可以使用excludeDevtoolsexcludeDockerCompose属性)。

Docker 守护进程

build-image目标需要访问 Docker 守护进程。 该目标将检查本地 Docker CLI 配置文件以确定当前上下文,并使用上下文连接信息与 Docker 守护进程通信。 如果无法确定当前上下文或上下文没有连接信息,则目标将使用默认的本地连接。 这适用于所有受支持平台上的 Docker 引擎,无需配置。spring-doc.cadn.net.cn

可以设置环境变量来配置build-image目标是使用替代的本地或远程连接。 下表显示了环境变量及其值:spring-doc.cadn.net.cn

环境变量 描述

DOCKER_CONFIGspring-doc.cadn.net.cn

用于确定当前上下文的 Docker CLI 配置文件的位置(默认为$HOME/.docker)spring-doc.cadn.net.cn

DOCKER_CONTEXTspring-doc.cadn.net.cn

应用于从 Docker CLI 配置文件中检索主机信息的上下文的名称(覆盖DOCKER_HOST)spring-doc.cadn.net.cn

DOCKER_HOSTspring-doc.cadn.net.cn

包含 Docker 守护程序的主机和端口的 URL - 例如tcp://192.168.99.100:2376spring-doc.cadn.net.cn

DOCKER_TLS_VERIFYspring-doc.cadn.net.cn

启用安全 HTTPS 协议 设置为1(可选)spring-doc.cadn.net.cn

DOCKER_CERT_PATHspring-doc.cadn.net.cn

HTTPS 的证书和密钥文件的路径(如果DOCKER_TLS_VERIFY=1,否则忽略)spring-doc.cadn.net.cn

Docker 守护进程连接信息也可以使用docker插件配置中的参数。 下表汇总了可用参数:spring-doc.cadn.net.cn

参数 描述

contextspring-doc.cadn.net.cn

应用于从 Docker CLI 配置文件中检索主机信息的上下文的名称spring-doc.cadn.net.cn

hostspring-doc.cadn.net.cn

包含 Docker 守护程序的主机和端口的 URL - 例如tcp://192.168.99.100:2376spring-doc.cadn.net.cn

tlsVerifyspring-doc.cadn.net.cn

启用安全 HTTPS 协议 设置为true(可选)spring-doc.cadn.net.cn

certPathspring-doc.cadn.net.cn

HTTPS 的证书和密钥文件的路径(如果tlsVerifytrue,否则忽略)spring-doc.cadn.net.cn

bindHostToBuilderspring-doc.cadn.net.cn

什么时候true,则host属性将提供给为 CNB 构建器创建的容器(可选)spring-doc.cadn.net.cn

有关更多详细信息,另请参阅示例spring-doc.cadn.net.cn

Docker 注册表

如果 Docker 镜像由builderrunImage参数存储在需要身份验证的私有 Docker 镜像注册表中,可以使用docker.builderRegistry参数。spring-doc.cadn.net.cn

如果要将生成的 Docker 镜像发布到 Docker 镜像注册表,则可以使用docker.publishRegistry参数。spring-doc.cadn.net.cn

为用户身份验证或身份Tokens身份验证提供了参数。有关支持的身份验证方法的更多信息,请参阅用于存储映像的 Docker 注册表的文档。spring-doc.cadn.net.cn

下表汇总了docker.builderRegistrydocker.publishRegistry:spring-doc.cadn.net.cn

参数 描述

usernamespring-doc.cadn.net.cn

Docker 映像注册表用户的用户名。用户身份验证所必需的。spring-doc.cadn.net.cn

passwordspring-doc.cadn.net.cn

Docker 映像注册表用户的密码。用户身份验证所必需的。spring-doc.cadn.net.cn

urlspring-doc.cadn.net.cn

Docker 镜像注册表的地址。用户身份验证可选。spring-doc.cadn.net.cn

emailspring-doc.cadn.net.cn

Docker 映像注册表用户的电子邮件地址。用户身份验证可选。spring-doc.cadn.net.cn

tokenspring-doc.cadn.net.cn

Docker 映像注册表用户的标识Tokens。Tokens身份验证所必需的。spring-doc.cadn.net.cn

有关更多详细信息,另请参阅示例spring-doc.cadn.net.cn

图像自定义

该插件调用构建器来编排图像的生成。 构建器包括多个构建包,可以检查应用程序以影响生成的映像。 默认情况下,插件会选择构建器映像。 生成的图像的名称是从项目属性中推断出来的。spring-doc.cadn.net.cn

image参数允许配置构建器及其在项目上的运行方式。 下表汇总了可用参数及其默认值:spring-doc.cadn.net.cn

参数 /(用户属性) 描述 默认值

builder
(spring-boot.build-image.builder)spring-doc.cadn.net.cn

要使用的构建器映像的名称。spring-doc.cadn.net.cn

paketobuildpacks/builder-jammy-java-tiny:latestspring-doc.cadn.net.cn

trustBuilder
(spring-boot.build-image.trustBuilder)spring-doc.cadn.net.cn

是否将构建者视为受信任的spring-doc.cadn.net.cn

true如果构建者是paketobuildpacks/builder-jammy-java-tiny,paketobuildpacks/builder-noble-java-tiny,paketobuildpacks/builder-jammy-tiny,paketobuildpacks/builder-jammy-base,paketobuildpacks/builder-jammy-full,paketobuildpacks/builder-jammy-buildpackless-tiny,paketobuildpacks/builder-jammy-buildpackless-base,paketobuildpacks/builder-jammy-buildpackless-full,gcr.io/buildpacks/builder,heroku/builder; false否则。spring-doc.cadn.net.cn

imagePlatform
(spring-boot.build-image.imagePlatform)spring-doc.cadn.net.cn

拉取的任何构建器、运行和构建包映像的平台(作系统和体系结构)。 必须采用OS[/architecture[/variant]]linux/amd64,linux/arm64linux/arm/v5. 请参阅用于确定可用映像作系统和体系结构选项的构建器的文档。spring-doc.cadn.net.cn

无默认值,表示应使用主机的平台。spring-doc.cadn.net.cn

runImage
(spring-boot.build-image.runImage)spring-doc.cadn.net.cn

要使用的运行映像的名称。spring-doc.cadn.net.cn

没有默认值,表示应使用构建器元数据中指定的运行映像。spring-doc.cadn.net.cn

name
(spring-boot.build-image.imageName)spring-doc.cadn.net.cn

生成的图像的图像名称spring-doc.cadn.net.cn

docker.io/library/
${project.artifactId}:${project.version}spring-doc.cadn.net.cn

pullPolicy
(spring-boot.build-image.pullPolicy)spring-doc.cadn.net.cn

用于确定何时从注册表中拉取构建器和运行映像的策略。 可接受的值是ALWAYS,NEVERIF_NOT_PRESENT.spring-doc.cadn.net.cn

ALWAYSspring-doc.cadn.net.cn

envspring-doc.cadn.net.cn

应传递给构建器的环境变量。spring-doc.cadn.net.cn

buildpacksspring-doc.cadn.net.cn

构建器在构建映像时应使用的构建包。 将仅使用指定的 buildpack,覆盖构建器中包含的默认 buildpack。 Buildpack 引用必须采用以下形式之一:spring-doc.cadn.net.cn

None,表示构建器应使用其中包含的构建包。spring-doc.cadn.net.cn

bindingsspring-doc.cadn.net.cn

在生成映像时应装载到构建器容器的卷绑定挂载。 创建构建器容器时,绑定将未经解析和验证传递给 Docker。 绑定必须采用以下形式之一:spring-doc.cadn.net.cn

哪里<options>可以包含:spring-doc.cadn.net.cn

network + (spring-boot.build-image.network)spring-doc.cadn.net.cn

构建器容器将配置为使用的网络驱动程序。创建构建器容器时,提供的值将未经验证传递给 Docker。spring-doc.cadn.net.cn

cleanCache + (spring-boot.build-image.cleanCache)spring-doc.cadn.net.cn

是否在构建前清理缓存。spring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

verboseLoggingspring-doc.cadn.net.cn

启用构建器作的详细日志记录。spring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

publish + (spring-boot.build-image.publish)spring-doc.cadn.net.cn

是否将生成的镜像发布到 Docker 注册表。spring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

tagsspring-doc.cadn.net.cn

要应用于生成的图像的一个或多个附加标记。 提供给tags选项应该是完整的图像引用。 有关更多详细信息,请参阅标签部分spring-doc.cadn.net.cn

buildWorkspacespring-doc.cadn.net.cn

构建器和构建包将用于在映像构建期间存储文件的临时工作区。 该值可以是命名卷或绑定挂载位置。spring-doc.cadn.net.cn

Docker 守护程序中的命名卷,其名称派生自映像名称。spring-doc.cadn.net.cn

buildCachespring-doc.cadn.net.cn

包含由 buildpack 创建并由映像构建过程使用的层的缓存。 该值可以是命名卷或绑定挂载位置。spring-doc.cadn.net.cn

Docker 守护程序中的命名卷,其名称派生自映像名称。spring-doc.cadn.net.cn

launchCachespring-doc.cadn.net.cn

包含由 buildpack 创建并由映像启动过程使用的层的缓存。 该值可以是命名卷或绑定挂载位置。spring-doc.cadn.net.cn

Docker 守护程序中的命名卷,其名称派生自映像名称。spring-doc.cadn.net.cn

createdDate
(spring-boot.build-image.createdDate)spring-doc.cadn.net.cn

将用于设置Created字段。 该值必须是 ISO 8601 即时格式的字符串,或者now以使用当前日期和时间。spring-doc.cadn.net.cn

实现生成可重现性的固定日期。spring-doc.cadn.net.cn

applicationDirectory
(spring-boot.build-image.applicationDirectory)spring-doc.cadn.net.cn

应用程序内容将在构建器映像中上传到的目录的路径。 应用程序内容也将位于生成图像中的此位置。spring-doc.cadn.net.cn

/workspacespring-doc.cadn.net.cn

securityOptionsspring-doc.cadn.net.cn

将应用于构建器容器的安全选项,作为字符串值数组提供spring-doc.cadn.net.cn

["label=disable"]在 Linux 和 macOS 上,在 Windows 上[]spring-doc.cadn.net.cn

该插件使用编译器的插件配置或maven.compiler.target财产。 当使用默认的 Paketo 构建器和构建包时,该插件会指示构建包安装相同的 Java 版本。 您可以覆盖此行为,如构建器配置示例所示。

有关更多详细信息,另请参阅示例spring-doc.cadn.net.cn

标签格式

提供给tags选项应该是完整的图像引用。 接受的格式是[domainHost:port/][path/]name[:tag][@digest].spring-doc.cadn.net.cn

如果缺少域,则默认为docker.io. 如果缺少路径,则默认为library. 如果缺少标记,则默认为latest.spring-doc.cadn.net.cn

一些例子:spring-doc.cadn.net.cn

spring-boot:build-image

org.springframework.boot:spring-boot-maven-plugin:3.4.9spring-doc.cadn.net.cn

使用 buildpack 将应用程序打包到 OCI 映像中,对生命周期进行分叉以确保package跑。此目标适用于命令行调用。如果需要配置目标execution在构建中,使用build-image-no-fork相反。spring-doc.cadn.net.cn

必填参数

名称 类型 默认值

源目录spring-doc.cadn.net.cn

Filespring-doc.cadn.net.cn

${project.build.directory}spring-doc.cadn.net.cn

参数详情

excludeDevtools

从重新打包的存档中排除 Spring Boot devtools。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

excludeDevtoolsspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.repackage.excludeDevtoolsspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.3.0spring-doc.cadn.net.cn

excludeDockerCompose

从重新打包的存档中排除 Spring Boot 开发服务。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

excludeDockerComposespring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.repackage.excludeDockerComposespring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

3.1.0spring-doc.cadn.net.cn

excludeGroupIds

要排除的 groupId 名称的逗号分隔列表(完全匹配)。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

excludeGroupIdsspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.Stringspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.excludeGroupIdsspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.1.0spring-doc.cadn.net.cn

excludes

要排除的工件定义的集合。这Exclude元素定义了强制性的groupIdartifactId组件和可选的classifier元件。配置为属性时,值应使用冒号分隔的组件以逗号分隔:groupId:artifactId,groupId:artifactId:classifierspring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

excludesspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.util.Listspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.excludesspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.1.0spring-doc.cadn.net.cn

image

图像配置,builder,runImage,name,env,cleanCache,verboseLogging,pullPolicypublish选项。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

imagespring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

org.springframework.boot.maven.Imagespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

includes

要包含的工件定义集合。这Include元素定义了强制性的groupIdartifactId组件和可选的classifier元件。配置为属性时,值应使用冒号分隔的组件以逗号分隔:groupId:artifactId,groupId:artifactId:classifierspring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

includesspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.util.Listspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.includesspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.2.0spring-doc.cadn.net.cn

layers

图层配置,具有禁用图层创建、排除图层工具 jar 和提供自定义图层配置文件的选项。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

layersspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

org.springframework.boot.maven.Layersspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

layout

存档的类型(对应于依赖项在其中的布局方式)。可能的值是JAR,WAR,ZIP,DIR,NONE. 默认为基于存档类型的猜测。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

layoutspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

org.springframework.boot.maven.AbstractPackagerMojo$LayoutTypespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

2.3.11spring-doc.cadn.net.cn

layoutFactory

如果未设置显式布局,则将用于创建可执行存档的布局工厂。替代布局实现可以由第三方提供。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

layoutFactoryspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

org.springframework.boot.loader.tools.LayoutFactoryspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

2.3.11spring-doc.cadn.net.cn

mainClass

主类的名称。如果未指定,则找到的第一个包含main方法将被使用。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

mainClassspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.Stringspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.0.0spring-doc.cadn.net.cn

sourceDirectory

包含源存档的目录。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

sourceDirectoryspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.io.Filespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

${project.build.directory}spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

spring-boot:build-image-no-fork

org.springframework.boot:spring-boot-maven-plugin:3.4.9spring-doc.cadn.net.cn

使用 buildpack 将应用程序打包到 OCI 映像中,但不要分叉生命周期。配置目标时应使用此目标execution在您的构建中。要在命令行上调用目标,请使用build-image相反。spring-doc.cadn.net.cn

必填参数

名称 类型 默认值

源目录spring-doc.cadn.net.cn

Filespring-doc.cadn.net.cn

${project.build.directory}spring-doc.cadn.net.cn

参数详情

excludeDevtools

从重新打包的存档中排除 Spring Boot devtools。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

excludeDevtoolsspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.repackage.excludeDevtoolsspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.3.0spring-doc.cadn.net.cn

excludeDockerCompose

从重新打包的存档中排除 Spring Boot 开发服务。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

excludeDockerComposespring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.repackage.excludeDockerComposespring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

3.1.0spring-doc.cadn.net.cn

excludeGroupIds

要排除的 groupId 名称的逗号分隔列表(完全匹配)。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

excludeGroupIdsspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.Stringspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.excludeGroupIdsspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.1.0spring-doc.cadn.net.cn

excludes

要排除的工件定义的集合。这Exclude元素定义了强制性的groupIdartifactId组件和可选的classifier元件。配置为属性时,值应使用冒号分隔的组件以逗号分隔:groupId:artifactId,groupId:artifactId:classifierspring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

excludesspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.util.Listspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.excludesspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.1.0spring-doc.cadn.net.cn

image

图像配置,builder,runImage,name,env,cleanCache,verboseLogging,pullPolicypublish选项。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

imagespring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

org.springframework.boot.maven.Imagespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

includes

要包含的工件定义集合。这Include元素定义了强制性的groupIdartifactId组件和可选的classifier元件。配置为属性时,值应使用冒号分隔的组件以逗号分隔:groupId:artifactId,groupId:artifactId:classifierspring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

includesspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.util.Listspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

spring-boot.includesspring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.2.0spring-doc.cadn.net.cn

layers

图层配置,具有禁用图层创建、排除图层工具 jar 和提供自定义图层配置文件的选项。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

layersspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

org.springframework.boot.maven.Layersspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

layout

存档的类型(对应于依赖项在其中的布局方式)。可能的值是JAR,WAR,ZIP,DIR,NONE. 默认为基于存档类型的猜测。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

layoutspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

org.springframework.boot.maven.AbstractPackagerMojo$LayoutTypespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

2.3.11spring-doc.cadn.net.cn

layoutFactory

如果未设置显式布局,则将用于创建可执行存档的布局工厂。替代布局实现可以由第三方提供。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

layoutFactoryspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

org.springframework.boot.loader.tools.LayoutFactoryspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

2.3.11spring-doc.cadn.net.cn

mainClass

主类的名称。如果未指定,则找到的第一个包含main方法将被使用。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

mainClassspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.lang.Stringspring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

1.0.0spring-doc.cadn.net.cn

sourceDirectory

包含源存档的目录。spring-doc.cadn.net.cn

名称spring-doc.cadn.net.cn

sourceDirectoryspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

java.io.Filespring-doc.cadn.net.cn

默认值spring-doc.cadn.net.cn

${project.build.directory}spring-doc.cadn.net.cn

用户属性spring-doc.cadn.net.cn

因为spring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

例子

自定义映像生成器

如果您需要自定义用于创建映像的构建器或用于启动构建的映像的运行映像,请配置插件,如以下示例所示:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<image>
						<builder>mine/java-cnb-builder</builder>
						<runImage>mine/java-cnb-run</runImage>
					</image>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

此配置将使用名为mine/java-cnb-builder和标签latest,运行映像名为mine/java-cnb-run和标签latest.spring-doc.cadn.net.cn

构建器和运行映像也可以在命令行上指定,如以下示例所示:spring-doc.cadn.net.cn

$ mvn spring-boot:build-image -Dspring-boot.build-image.builder=mine/java-cnb-builder -Dspring-boot.build-image.runImage=mine/java-cnb-run

构建器配置

如果构建器使用环境变量公开配置选项,则可以使用env属性。spring-doc.cadn.net.cn

以下是在构建时配置 Paketo Java 构建包使用的 JVM 版本的示例:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<image>
						<env>
							<BP_JVM_VERSION>17</BP_JVM_VERSION>
						</env>
					</image>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

如果构建器运行的 Docker 守护程序与构建包下载工件的网络位置之间存在网络代理,则需要将构建器配置为使用代理。 使用 Paketo 构建器时,这可以通过将HTTPS_PROXY和/或HTTP_PROXY环境变量,如以下示例所示:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<image>
						<env>
							<HTTP_PROXY>http://proxy.example.com</HTTP_PROXY>
							<HTTPS_PROXY>https://proxy.example.com</HTTPS_PROXY>
						</env>
					</image>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

运行时 JVM 配置

Paketo Java 构建包通过设置JAVA_TOOL_OPTIONS环境变量。 buildpack-providedJAVA_TOOL_OPTIONS可以修改值,以自定义在容器中启动应用程序映像时的 JVM 运行时行为。spring-doc.cadn.net.cn

应存储在映像中并应用于每个部署的环境变量修改可以按照 Paketo 文档中的说明进行设置,并如以下示例所示:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<image>
						<env>
							<BPE_DELIM_JAVA_TOOL_OPTIONS xml:space="preserve"> </BPE_DELIM_JAVA_TOOL_OPTIONS>
							<BPE_APPEND_JAVA_TOOL_OPTIONS>-XX:+HeapDumpOnOutOfMemoryError</BPE_APPEND_JAVA_TOOL_OPTIONS>
						</env>
					</image>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

自定义映像名称

默认情况下,图像名称是从artifactIdversion项目的,类似于docker.io/library/${project.artifactId}:${project.version}. 您可以控制名称,如以下示例所示:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<image>
						<name>example.com/library/${project.artifactId}</name>
					</image>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
此配置不提供显式标记,因此latest被使用。也可以指定标签,使用${project.version}、生成中可用的任何属性或硬编码版本。

也可以在命令行上指定图像名称,如以下示例所示:spring-doc.cadn.net.cn

$ mvn spring-boot:build-image -Dspring-boot.build-image.imageName=example.com/library/my-app:v1

构建包

默认情况下,构建器将使用构建器映像中包含的构建包,并按预定义的顺序应用它们。可以提供一组替代的构建包来应用构建器中未包含的构建包,或更改包含的构建包的顺序。当提供一个或多个构建包时,将仅应用指定的构建包。spring-doc.cadn.net.cn

以下示例指示构建器使用打包在.tgz文件,后跟构建器中包含的 buildpack。spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<image>
						<buildpacks>
							<buildpack>file:///path/to/example-buildpack.tgz</buildpack>
							<buildpack>urn:cnb:builder:paketo-buildpacks/java</buildpack>
						</buildpacks>
					</image>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

构建包可以以如下所示的任何形式指定。spring-doc.cadn.net.cn

位于 CNB Builder 中的 buildpack(如果构建器中只有一个 buildpack 与buildpack-id):spring-doc.cadn.net.cn

包含 buildpack 内容的目录的路径(Windows 不支持):spring-doc.cadn.net.cn

包含 buildpack 内容的 gzip 压缩 tar 文件的路径:spring-doc.cadn.net.cn

包含打包构建包的 OCI 映像:spring-doc.cadn.net.cn

图片发布

生成的映像可以通过启用publish选择。spring-doc.cadn.net.cn

如果 Docker 注册表需要身份验证,则可以使用docker.publishRegistry参数。 如果 Docker 注册表不需要身份验证,则docker.publishRegistry配置可以省略。spring-doc.cadn.net.cn

映像将发布到的注册表由映像名称的注册表部分 (docker.example.com在这些示例中)。 如果docker.publishRegistry凭据已配置并包含url参数,则此值将传递给注册表,但不用于确定发布注册表位置。
<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<image>
						<name>docker.example.com/library/${project.artifactId}</name>
						<publish>true</publish>
					</image>
					<docker>
						<publishRegistry>
							<username>user</username>
							<password>secret</password>
						</publishRegistry>
					</docker>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

publish选项也可以在命令行上指定,如以下示例所示:spring-doc.cadn.net.cn

$ mvn spring-boot:build-image -Dspring-boot.build-image.imageName=docker.example.com/library/my-app:v1 -Dspring-boot.build-image.publish=true

使用publish选项,您可以使用属性提供凭据,如以下示例所示:spring-doc.cadn.net.cn

$ mvn spring-boot:build-image \
      -Ddocker.publishRegistry.username=user \
      -Ddocker.publishRegistry.password=secret \
      -Ddocker.publishRegistry.url=docker.example.com \
      -Dspring-boot.build-image.publish=true \
      -Dspring-boot.build-image.imageName=docker.example.com/library/my-app:v1

并引用 XML 配置中的属性:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<docker>
						<publishRegistry>
							<url>${docker.publishRegistry.url}</url>
							<username>${docker.publishRegistry.username}</username>
							<password>${docker.publishRegistry.password}</password>
						</publishRegistry>
					</docker>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

构建器缓存和工作区配置

CNB 构建器缓存构建和启动映像时使用的层。 默认情况下,这些缓存作为命名卷存储在 Docker 守护程序中,其名称派生自目标映像的全名。 如果镜像名称频繁更改,例如,当项目版本用作镜像名称中的标签时,缓存可能会频繁失效。spring-doc.cadn.net.cn

可以将缓存卷配置为使用备用名称,以更好地控制缓存生命周期,如以下示例所示:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<image>
						<buildCache>
							<volume>
								<name>cache-${project.artifactId}.build</name>
							</volume>
						</buildCache>
						<launchCache>
							<volume>
								<name>cache-${project.artifactId}.launch</name>
							</volume>
						</launchCache>
					</image>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

构建器和构建包需要一个位置来存储映像构建期间的临时文件。 默认情况下,此临时生成工作区存储在命名卷中。spring-doc.cadn.net.cn

缓存和构建工作区可以配置为使用绑定挂载而不是命名卷,如以下示例所示:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<image>
						<buildWorkspace>
							<bind>
								<source>/tmp/cache-${project.artifactId}.work</source>
							</bind>
						</buildWorkspace>
						<buildCache>
							<bind>
								<source>/tmp/cache-${project.artifactId}.build</source>
							</bind>
						</buildCache>
						<launchCache>
							<bind>
								<source>/tmp/cache-${project.artifactId}.launch</source>
							</bind>
						</launchCache>
					</image>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

Docker 配置

minikube 的 Docker 配置

该插件可以与 minikube 提供的 Docker 守护进程进行通信,而不是默认的本地连接。spring-doc.cadn.net.cn

在 Linux 和 macOS 上,可以使用命令eval $(minikube docker-env)minikube 启动后。spring-doc.cadn.net.cn

该插件还可以通过提供类似于以下示例中所示的连接详细信息来配置为 minikube 守护进程:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<docker>
						<host>tcp://192.168.99.100:2376</host>
						<tlsVerify>true</tlsVerify>
						<certPath>/home/user/.minikube/certs</certPath>
					</docker>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

podman 的 Docker 配置

该插件可以与 podman 容器引擎通信。spring-doc.cadn.net.cn

可以通过提供类似于以下示例中所示的连接详细信息,将插件配置为使用 podman 本地连接:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<docker>
						<host>unix:///run/user/1000/podman/podman.sock</host>
						<bindHostToBuilder>true</bindHostToBuilder>
					</docker>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>
使用colimaCLI 安装时,命令podman info --format='{{.Host.RemoteSocket.Path}}'可用于获取docker.host此示例中显示的 configuration 属性。

Colima 的 Docker 配置

该插件可以与 Colima 提供的 Docker 守护进程进行通信。 这DOCKER_HOST可以使用以下命令设置环境变量:spring-doc.cadn.net.cn

$ export DOCKER_HOST=$(docker context inspect colima -f '{{.Endpoints.docker.Host}}')

还可以通过提供类似于以下示例中所示的连接详细信息来将插件配置为使用 Colima 守护程序:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<docker>
						<host>unix:///${user.home}/.colima/docker.sock</host>
					</docker>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

用于身份验证的 Docker 配置

如果构建器或运行映像存储在支持用户身份验证的私有 Docker 注册表中,则可以使用docker.builderRegistry参数,如以下示例所示:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<docker>
						<builderRegistry>
							<username>user</username>
							<password>secret</password>
							<url>https://docker.example.com/v1/</url>
							<email>[email protected]</email>
						</builderRegistry>
					</docker>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

如果构建器或运行镜像存储在支持Tokens身份验证的私有 Docker 注册表中,则可以使用docker.builderRegistry参数,如以下示例所示:spring-doc.cadn.net.cn

<project>
	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<docker>
						<builderRegistry>
							<token>9cbaf023786cd7...</token>
						</builderRegistry>
					</docker>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>