你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Paketo Buildpacks 容器化应用程序
注意
基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用。
本文适用于:✅基本计划/标准计划 ✅ 企业计划
本文介绍如何使用 Paketo Buildpacks 生成容器映像。
Azure Spring Apps 服务支持从源代码生成映像,而无需使用 Dockerfile。 它不限于 Java 应用程序,而是扩展到了其他编程语言,甚至静态 Web 内容。 在标准计划中,该服务使用开源 Paketo Buildpacks,而在企业计划中,则使用 VMware Tanzu Buildpacks。 如果 Tanzu Buildpacks 不可用,或者没有使用 Paketo 所需的联机服务,则可以切换到本地 Paketo Buildpacks 来生成映像。 然后将其部署到 Azure 容器注册表或其他 Docker 注册表。
本文介绍如何使用 TOML 文件创建生成器,然后使用生成器生成源代码或项目文件。 有关详细信息,请参阅 builder.toml。 若要了解生成映像、运行映像和堆栈,请参阅什么是基础映像。
先决条件
标准计划
Azure Spring Apps 标准计划附带了一个内置生成器,无法对其进行自定义。 如果使用标准计划,则需要使用以下内容创建名为 standard-builder.toml 的 TOML 文件。 使用此文件,可以创建与 Azure Spring Apps 标准计划中提供的生成器等效的生成器。
# filename: standard-builder.toml
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/java-azure:12.0.0"
id = "paketo-buildpacks/java-azure"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/java-native-image:9.8.0"
id = "paketo-buildpacks/java-native-image"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/dotnet-core:0.48.3"
id = "paketo-buildpacks/dotnet-core"
[[order]]
[[order.group]]
id = "paketo-buildpacks/java-azure"
[[order]]
[[order.group]]
id = "paketo-buildpacks/java-native-image"
[[order]]
[[order.group]]
id = "paketo-buildpacks/dotnet-core"
[build]
image = "paketobuildpacks/build-jammy-base:0.1.129"
[run]
[[run.images]]
image = "paketobuildpacks/run-jammy-base:0.1.129"
若要使用此 TOML 文件创建生成器,请使用以下命令:
pack builder create <builder-name> --config ./standard-builder.toml
可以使用以下命令检查生成器:
pack builder inspect <builder-name>
若要使用此生成器将 Java 源代码或 .NET 源代码生成到容器映像,请使用以下命令:
pack build <image-name> \
--path <path-to-source-root> \
--builder <builder-name>
若要使用生成器将项目(如 JAR 或 WAR 文件)生成到容器映像,请使用以下命令:
pack build <image-name> \
--path <path-to-artifact> \
--builder <builder-name>
企业计划
Azure Spring Apps 企业计划使用 VMware Tanzu Buildpacks 将源代码生成到容器映像。 Tanzu Buildpacks 基于开源 Paketo Buildpacks 构建。 因此,可能无法找到与 Tanzu Buildpack 完全等效的 Paketo Buildpack。
在本部分中,可以看到如何使用 Paketo Buildpacks 包创建一个生成器,该生成器与企业计划中的生成器接近,但又不完全相同。 由你负责运行测试或查看 Buildpack,以确认企业计划中的生成器与本地计算机上自己的生成器之间的兼容性。
企业计划附带了一个默认生成器,其中包括以下组件:
- OS 堆栈:io.buildpacks.stacks.jammy-base
- Buildpack:
- tanzu-buildpacks/java-azure
- tanzu-buildpacks/dotnet-core
- tanzu-buildpacks/go
- tanzu-buildpacks/web-servers
- tanzu-buildpacks/nodejs
- tanzu-buildpacks/python
使用包 CLI,可以在本地计算机上使用 Paketo OS 堆栈和 Paketo Buildpacks 创建类似的生成器。 然后,可以使用这个新创建的生成器来生成应用程序源代码。
如果使用非默认生成器,则需要检查其配置(OS 堆栈和 Buildpack),然后创建类似于它的 Paketo 生成器。 若要检查生成器的配置,请转到 Azure 门户,找到 Azure Spring Apps 实例,然后查看“生成服务”窗格。 找到生成器,然后选择“编辑生成器”。 或者,可以使用 Azure CLI 命令 az spring build-service builder show
。
下表显示了与企业计划中使用的 OS 堆栈等效的 Paketo OS 堆栈:
企业计划中的 OS 堆栈 | Paketo OS 堆栈 |
---|---|
io.buildpacks.stacks.jammy-base |
paketobuildpacks/jammy-base-stack 生成: paketobuildpacks/build-jammy-base 运行: paketobuildpacks/run-jammy-base |
io.buildpacks.stacks.jammy-full |
paketobuildpacks/jammy-full-stack 生成: paketobuildpacks/build-jammy-full 运行: paketobuildpacks/run-jammy-full |
io.buildpacks.stacks.jammy-tiny |
paketobuildpacks/jammy-tiny-stack 生成: paketobuildpacks/build-jammy-tiny 运行: paketobuildpacks/run-jammy-tiny |
io.buildpacks.stacks.bionic-base (End of support) |
paketobuildpacks/bionic-base-stack 生成: paketobuildpacks/build-bionic-base 运行: paketobuildpacks/run-bionic-base |
io.buildpacks.stacks.bionic-full (End of support) |
paketobuildpacks/bionic-full-stack 生成: paketobuildpacks/build-bionic-full 运行: paketobuildpacks/run-bionic-full |
下表显示了与企业计划中使用的 Buildpack 等效的 Paketo Buildpack:
企业计划中的 Buildpack | Paketo Buildpack |
---|---|
tanzu-buildpacks/dotnet-core |
paketo-buildpacks/dotnet-core |
tanzu-buildpacks/go |
paketo-buildpacks/go |
tanzu-buildpacks/java-azure |
paketo-buildpacks/java-azure |
tanzu-buildpacks/java-native-image |
paketo-buildpacks/java-native-image |
tanzu-buildpacks/nodejs |
paketo-buildpacks/nodejs |
tanzu-buildpacks/php |
paketo-buildpacks/php |
tanzu-buildpacks/python |
paketo-buildpacks/python |
tanzu-buildpacks/web-servers |
paketo-buildpacks/web-servers |
以企业计划中的默认生成器为例。 使用以下 TOML 文件 (enterprise-builder.toml) 在本地计算机上创建类似的生成器:
# filename: enterprise-builder.toml
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/java-azure:latest"
id = "paketo-buildpacks/java-azure"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/dotnet-core:latest"
id = "paketo-buildpacks/dotnet-core"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/go:latest"
id = "paketo-buildpacks/go"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/web-servers:latest"
id = "paketo-buildpacks/web-servers"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/nodejs:latest"
id = "paketo-buildpacks/nodejs"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/python:latest"
id = "paketo-buildpacks/python"
[[order]]
[[order.group]]
id = "paketo-buildpacks/java-azure"
[[order]]
[[order.group]]
id = "paketo-buildpacks/dotnet-core"
[[order]]
[[order.group]]
id = "paketo-buildpacks/go"
[[order]]
[[order.group]]
id = "paketo-buildpacks/web-servers"
[[order]]
[[order.group]]
id = "paketo-buildpacks/nodejs"
[[order]]
[[order.group]]
id = "paketo-buildpacks/python"
[build]
image = "paketobuildpacks/build-jammy-base:latest"
[run]
[[run.images]]
image = "paketobuildpacks/run-jammy-base:latest"
若要使用此 TOML 文件创建生成器,请使用以下命令:
pack builder create <builder-name> --config ./enterprise-builder.toml
可以使用以下命令检查生成器:
pack builder inspect <builder-name>
现在,你有一个类似于 Azure Spring Apps 企业计划中的默认生成器的生成器。 使用此生成器,可以使用以下命令将 JAR 文件、WAR 文件、Java 源代码、.NET 源代码、Golang 源代码、Node.js 源代码或 Python 源代码生成到容器映像:
pack build <image-name> \
--path <path-to-source-root> \
--builder <builder-name>
若要使用生成器将项目(如 JAR 或 WAR 文件)生成到容器映像,请使用以下命令:
pack build <image-name> \
--path <path-to-artifact> \
--builder <builder-name>
还可以通过添加或移除 Buildpack,然后使用它更新现有生成器或创建新生成器来自定义 enterprise-builder.toml。
自定义
Buildpack 提供了自定义各种配置的方法。 以下示例演示了生成具有特定要求的容器映像的常见方案:
- 若要自定义适用于 Java 的 JDK 源代码,请参阅 paketo-buildpacks/microsoft-openjdk。
- 若要自定义适用于 WAR 的 Tomcat,请参阅 paketo-buildpacks/apache-tomcat。
- 若要在生成和运行时将 CA 证书添加到系统信任存储,请参阅 paketo-buildpacks/ca-certificates。
有关属性和配置的详细信息,请参阅如何使用 Paketo Buildpacks 生成 Java 应用和 Java Buildpack 参考。