此版本仍在开发中,尚未视为稳定版。如需最新稳定版本,请使用 Spring Boot 4.0.4spring-doc.cadn.net.cn

打包 OCI 镜像

该插件可以使用云原生构建包(CNB)从 JAR 或 WAR 文件创建OCI 镜像。 可以通过命令行使用 build-image 目标来构建镜像。 这可确保在创建镜像之前已执行打包生命周期。spring-doc.cadn.net.cn

出于安全考虑,镜像以非 root 用户身份构建和运行。 更多详情请参见 CNB 规范

最简单的入门方式是在项目上执行 mvn spring-boot:build-image。 如下例所示,可以在每次调用 package 阶段时自动创建镜像: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>
在将目标绑定到 package 生命周期时,请使用 build-image-no-fork。 该目标与 build-image 类似,但不会 fork 生命周期以确保 package 已执行。 在本节其余部分中,build-image 用于泛指 build-imagebuild-image-no-fork 目标。
虽然构建包是从 可执行归档文件 运行的,但无需先执行 repackage 目标,因为如有必要,可执行归档文件会自动创建。 当 build-image 重新打包应用程序时,它会应用与 repackage 目标相同的设置,即可以使用其中一个排除选项来排除依赖项。 默认情况下,spring-boot-devtoolsspring-boot-docker-compose 模块会自动被排除(您可以使用 excludeDevtoolsexcludeDockerCompose 属性来控制此行为)。 请注意,可选依赖项默认不会被包含在内。 如果您将这些模块定义为可选,则还需要将 includeOptional 属性设置为 true

Docker 守护进程

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

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

环境变量 <description> </description>

DOCKER_CONFIGspring-doc.cadn.net.cn

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

DOCKER_CONTEXTspring-doc.cadn.net.cn

用于从 Docker CLI 配置文件中检索主机信息的上下文名称(会覆盖 DOCKER_HOSTspring-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

当设置为 1 时启用安全的 HTTPS 协议(可选)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

参数 <description> </description>

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

当设置为 true 时启用安全的 HTTPS 协议(可选)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 注册表

如果 builderrunImage 参数指定的 Docker 镜像存储在需要身份验证的私有 Docker 镜像仓库中,则可以使用 docker.builderRegistry 参数提供身份验证凭据。spring-doc.cadn.net.cn

如果要将生成的 Docker 镜像发布到 Docker 镜像仓库,可以使用 docker.publishRegistry 参数提供身份验证凭据。spring-doc.cadn.net.cn

参数用于用户身份验证或身份Tokens(identity token)身份验证。 有关所支持的身份验证方法的更多信息,请参阅所使用的 Docker 注册表的文档,该注册表用于存储镜像。spring-doc.cadn.net.cn

下表总结了 docker.builderRegistrydocker.publishRegistry 可用的参数:spring-doc.cadn.net.cn

参数 <description> </description>

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

如果未提供凭据,该插件会读取用户现有的 Docker 配置文件(通常位于 $HOME/.docker/config.json)以确定身份验证方法。 插件将使用这些方法,为所请求的镜像提供身份验证凭据。spring-doc.cadn.net.cn

该插件支持以下认证方法:spring-doc.cadn.net.cn

  • 凭证助手(Credential Helpers):在 Docker 配置文件中配置的外部工具,用于为特定的镜像仓库提供凭证。例如,osxkeychainecr-login 等工具可处理某些镜像仓库的身份验证。spring-doc.cadn.net.cn

  • 凭证存储:一种默认的后备机制,用于安全地存储和检索凭证(例如 Docker Desktop 的 desktop)。spring-doc.cadn.net.cn

  • 静态凭证:直接存储在 Docker 配置文件 auths 部分中的凭证。spring-doc.cadn.net.cn

图像自定义

该插件调用一个构建器(builder)来协调镜像的生成。 该构建器包含多个构建包(buildpacks),可以检查应用程序以影响所生成的镜像。 默认情况下,该插件会选择一个构建器镜像。 所生成镜像的名称由项目属性推断得出。spring-doc.cadn.net.cn

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

参数 /(用户属性) <description> </description> 默认值

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

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

paketobuildpacks/builder-noble-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-noble-java-tinypaketobuildpacks/builder-jammy-java-tinypaketobuildpacks/builder-jammy-tinypaketobuildpacks/builder-jammy-basepaketobuildpacks/builder-jammy-fullpaketobuildpacks/builder-jammy-buildpackless-tinypaketobuildpacks/builder-jammy-buildpackless-basepaketobuildpacks/builder-jammy-buildpackless-fullgcr.io/buildpacks/builderheroku/builder 中的一个;否则为 falsespring-doc.cadn.net.cn

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

所拉取的任何构建器(builder)、运行(run)和构建包(buildpack)镜像的平台(操作系统和架构)。 必须采用 OS[/architecture[/variant]] 的格式,例如 linux/amd64linux/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

策略,用于确定何时从注册表拉取构建器镜像和运行镜像。 可接受的值为 ALWAYSNEVERIF_NOT_PRESENTspring-doc.cadn.net.cn

ALWAYSspring-doc.cadn.net.cn

envspring-doc.cadn.net.cn

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

buildpacksspring-doc.cadn.net.cn

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

无,表示构建器应使用其内置的构建包。spring-doc.cadn.net.cn

bindingsspring-doc.cadn.net.cn

构建镜像时应挂载到构建器容器的卷绑定挂载(Volume bind mounts)。 创建构建器容器时,这些绑定将不经解析和验证直接传递给 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

一个缓存,包含由构建包(buildpacks)创建并在镜像构建过程中使用的层。 其值可以是一个命名卷(named volume)或绑定挂载(bind mount)的位置。spring-doc.cadn.net.cn

Docker 守护进程中的一个命名卷,其名称源自镜像名称。spring-doc.cadn.net.cn

launchCachespring-doc.cadn.net.cn

一个包含由构建包(buildpacks)创建的层(layers)并被镜像启动过程使用的缓存。 该值可以是一个命名卷(named volume)或绑定挂载(bind mount)的位置。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 属性来检测项目的目标 Java 兼容版本。 当使用默认的 Paketo 构建器和构建包时,该插件会指示构建包安装相同的 Java 版本。 您可以按照构建器配置示例中所示的方式覆盖此行为。

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

标签格式

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

如果未指定域名,则默认为 docker.io。 如果未指定路径,则默认为 library。 如果未指定标签,则默认为 latestspring-doc.cadn.net.cn

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

spring-boot:build-image

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

使用构建包(buildpack)将应用程序打包为 OCI 镜像,并通过 fork 生命周期来确保 package 阶段已执行。此目标适用于命令行调用。如果需要在构建中配置一个 execution 目标,请改用 build-image-no-forkspring-doc.cadn.net.cn

必需参数

姓名 类型 默认

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

Filespring-doc.cadn.net.cn

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

可选参数

姓名 类型 默认

应用程序目录spring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

分类器spring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

清除缓存spring-doc.cadn.net.cn

Booleanspring-doc.cadn.net.cn

创建日期spring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

Dockerspring-doc.cadn.net.cn

Dockerspring-doc.cadn.net.cn

excludeDevtoolsspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

excludeDockerComposespring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

排除的 GroupId 列表spring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

排除项spring-doc.cadn.net.cn

Listspring-doc.cadn.net.cn

图片spring-doc.cadn.net.cn

Imagespring-doc.cadn.net.cn

imageBuilderspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

imageNamespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

imagePlatformspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

includeOptionalspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

包含系统范围spring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

includeToolsspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

包含spring-doc.cadn.net.cn

Listspring-doc.cadn.net.cn

spring-doc.cadn.net.cn

Layersspring-doc.cadn.net.cn

布局spring-doc.cadn.net.cn

LayoutTypespring-doc.cadn.net.cn

layoutFactoryspring-doc.cadn.net.cn

LayoutFactoryspring-doc.cadn.net.cn

主类spring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

网络spring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

发布spring-doc.cadn.net.cn

Booleanspring-doc.cadn.net.cn

拉取策略spring-doc.cadn.net.cn

PullPolicyspring-doc.cadn.net.cn

runImagespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

跳过spring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

trustBuilderspring-doc.cadn.net.cn

Booleanspring-doc.cadn.net.cn

参数详情

applicationDirectory

Image#applicationDirectory 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

applicationDirectoryspring-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.build-image.applicationDirectoryspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

3.1.0spring-doc.cadn.net.cn

classifier

查找源代码归档文件时使用的分类器。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

classifierspring-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

Sincespring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

cleanCache

Image#cleanCache 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

cleanCachespring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

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

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

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

spring-boot.build-image.cleanCachespring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

2.4.0spring-doc.cadn.net.cn

createdDate

Image#createdDate 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

createdDatespring-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.build-image.createdDatespring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

3.1.0spring-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

Sincespring-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

Sincespring-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

Sincespring-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

Sincespring-doc.cadn.net.cn

1.1.0spring-doc.cadn.net.cn

image

镜像配置,包含 builderrunImagenameenvcleanCacheverboseLoggingpullPolicypublish 选项。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

Sincespring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

imageBuilder

Image#builder 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

imageBuilderspring-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.build-image.builderspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

imageName

Image#name 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

imageNamespring-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.build-image.imageNamespring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

imagePlatform

Image#imagePlatform 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

imagePlatformspring-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.build-image.imagePlatformspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

3.4.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

Sincespring-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

Sincespring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

layout

归档文件的类型(对应于其中依赖项的布局方式)。可能的取值有 JARWARZIPDIRNONE。默认值根据归档文件的类型自动推断。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

Sincespring-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

Sincespring-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

Sincespring-doc.cadn.net.cn

1.0.0spring-doc.cadn.net.cn

network

Image#network 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

networkspring-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.build-image.networkspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

2.6.0spring-doc.cadn.net.cn

publish

Image#publish 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

publishspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

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

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

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

spring-boot.build-image.publishspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

pullPolicy

Image#pullPolicy 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

pullPolicyspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

org.springframework.boot.buildpack.platform.build.PullPolicyspring-doc.cadn.net.cn

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

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

spring-boot.build-image.pullPolicyspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

runImage

Image#runImage 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

runImagespring-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.build-image.runImagespring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

2.3.1spring-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

Sincespring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

trustBuilder

Image#trustBuilder 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

trustBuilderspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

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

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

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

spring-boot.build-image.trustBuilderspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

spring-boot:build-image-no-fork

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

使用构建包(buildpack)将应用程序打包为 OCI 镜像,但不 fork 生命周期(lifecycle)。在构建中配置目标 execution 时应使用此目标。若要在命令行上调用该目标,请改用 build-imagespring-doc.cadn.net.cn

必需参数

姓名 类型 默认

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

Filespring-doc.cadn.net.cn

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

可选参数

姓名 类型 默认

应用程序目录spring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

分类器spring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

清除缓存spring-doc.cadn.net.cn

Booleanspring-doc.cadn.net.cn

创建日期spring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

Dockerspring-doc.cadn.net.cn

Dockerspring-doc.cadn.net.cn

excludeDevtoolsspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

excludeDockerComposespring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

排除的 GroupId 列表spring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

排除项spring-doc.cadn.net.cn

Listspring-doc.cadn.net.cn

图片spring-doc.cadn.net.cn

Imagespring-doc.cadn.net.cn

imageBuilderspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

imageNamespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

imagePlatformspring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

includeOptionalspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

包含系统范围spring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

includeToolsspring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

truespring-doc.cadn.net.cn

包含spring-doc.cadn.net.cn

Listspring-doc.cadn.net.cn

spring-doc.cadn.net.cn

Layersspring-doc.cadn.net.cn

布局spring-doc.cadn.net.cn

LayoutTypespring-doc.cadn.net.cn

layoutFactoryspring-doc.cadn.net.cn

LayoutFactoryspring-doc.cadn.net.cn

主类spring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

网络spring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

发布spring-doc.cadn.net.cn

Booleanspring-doc.cadn.net.cn

拉取策略spring-doc.cadn.net.cn

PullPolicyspring-doc.cadn.net.cn

runImagespring-doc.cadn.net.cn

Stringspring-doc.cadn.net.cn

跳过spring-doc.cadn.net.cn

booleanspring-doc.cadn.net.cn

falsespring-doc.cadn.net.cn

trustBuilderspring-doc.cadn.net.cn

Booleanspring-doc.cadn.net.cn

参数详情

applicationDirectory

Image#applicationDirectory 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

applicationDirectoryspring-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.build-image.applicationDirectoryspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

3.1.0spring-doc.cadn.net.cn

classifier

查找源代码归档文件时使用的分类器。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

classifierspring-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

Sincespring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

cleanCache

Image#cleanCache 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

cleanCachespring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

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

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

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

spring-boot.build-image.cleanCachespring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

2.4.0spring-doc.cadn.net.cn

createdDate

Image#createdDate 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

createdDatespring-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.build-image.createdDatespring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

3.1.0spring-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

Sincespring-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

Sincespring-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

Sincespring-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

Sincespring-doc.cadn.net.cn

1.1.0spring-doc.cadn.net.cn

image

镜像配置,包含 builderrunImagenameenvcleanCacheverboseLoggingpullPolicypublish 选项。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

Sincespring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

imageBuilder

Image#builder 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

imageBuilderspring-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.build-image.builderspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

imageName

Image#name 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

imageNamespring-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.build-image.imageNamespring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

imagePlatform

Image#imagePlatform 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

imagePlatformspring-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.build-image.imagePlatformspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

3.4.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

Sincespring-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

Sincespring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

layout

归档文件的类型(对应于其中依赖项的布局方式)。可能的取值有 JARWARZIPDIRNONE。默认值根据归档文件的类型自动推断。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

Sincespring-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

Sincespring-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

Sincespring-doc.cadn.net.cn

1.0.0spring-doc.cadn.net.cn

network

Image#network 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

networkspring-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.build-image.networkspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

2.6.0spring-doc.cadn.net.cn

publish

Image#publish 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

publishspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

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

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

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

spring-boot.build-image.publishspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

pullPolicy

Image#pullPolicy 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

pullPolicyspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

org.springframework.boot.buildpack.platform.build.PullPolicyspring-doc.cadn.net.cn

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

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

spring-boot.build-image.pullPolicyspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

runImage

Image#runImage 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

runImagespring-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.build-image.runImagespring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

2.3.1spring-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

Sincespring-doc.cadn.net.cn

2.3.0spring-doc.cadn.net.cn

trustBuilder

Image#trustBuilder 的别名,用于支持通过命令行属性进行配置。spring-doc.cadn.net.cn

姓名spring-doc.cadn.net.cn

trustBuilderspring-doc.cadn.net.cn

类型spring-doc.cadn.net.cn

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

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

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

spring-boot.build-image.trustBuilderspring-doc.cadn.net.cn

Sincespring-doc.cadn.net.cn

<h1>示例</h1>

自定义镜像构建器

如果你需要自定义用于创建镜像的构建器,或用于启动所构建镜像的运行镜像,请按以下示例配置该插件: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

<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 构建包通过设置 https://paketo.io/docs/buildpacks/language-family-buildpacks/java/#runtime-jvm-configuration 环境变量来配置 JVM 运行时环境。 当应用程序镜像在容器中启动时,可以修改构建包提供的 JAVA_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 文件中的自定义构建包,然后使用构建器中包含的构建包。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>

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

位于 CNB 构建器中的一个构建包(如果该构建器中只有一个构建包与 buildpack-id 匹配,则版本号可以省略):spring-doc.cadn.net.cn

指向包含构建包(buildpack)内容的目录的路径(在 Windows 上不受支持):spring-doc.cadn.net.cn

一个指向包含构建包内容的 gzip 压缩 tar 文件的路径:spring-doc.cadn.net.cn

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

图片发布

可以通过启用 publish 选项将生成的镜像发布到 Docker 仓库。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>

构建器(Builders)和构建包(buildpacks)在构建镜像过程中需要一个位置来存储临时文件。 默认情况下,此临时构建工作区存储在一个命名卷(named volume)中。spring-doc.cadn.net.cn

缓存和构建工作区可以配置为使用绑定挂载(bind mounts)而非命名卷(named volumes),如下例所示: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 上,启动 minikube 后,可以使用命令 eval $(minikube docker-env) 来设置环境变量。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>
安装了 colima CLI 后,可以使用命令 podman info --format='{{.Host.RemoteSocket.Path}}' 来获取本示例中所示的 docker.host 配置属性的值。

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 参数提供Tokens值,如下例所示: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>