你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

如何在 Azure Spring Apps 企业计划中部署多语言应用

注意

基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告

标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用

本文适用于:❌ 基本版/标准版 ✔️ 企业版

本文介绍如何在 Azure Spring Apps 企业计划中部署多语言应用,以及这些多语言应用如何使用生成包提供的生成服务功能。

先决条件

在服务实例中部署多语言应用程序

本部分适用于在启用生成服务时生成和部署多语言应用程序。 如果禁用生成服务,则只能使用自定义容器映像部署应用程序。 可以创建自己的映像,也可以使用 Azure Spring Apps 企业实例生成的映像。 有关详细信息,请参阅使用自定义容器映像部署应用程序

管理生成器

创建 Azure Spring Apps 企业实例时,必须从以下受支持的语言系列生成包中选择一个默认生成器:

有关详细信息,请参阅适用于 VMware Tanzu 的语言系列生成包

这些生成包支持使用源代码或生成工件生成 Java、.NET Core、Go、Web 静态文件、Node.js 和 Python 应用。 还可在创建或查看生成器期间查看生成包版本。 可通过指定生成包和堆栈来创建自定义生成器。

在 Azure Spring Apps 服务实例中配置的所有生成器都列在“生成服务”页上,如以下屏幕截图所示

Azure 门户中“生成服务”页的屏幕截图,其中突出显示了“生成器”列表。

选择“添加”以创建新的生成器。 下面的屏幕截图显示了你应该用来创建自定义生成器的资源。 OS 堆栈包括 Bionic BaseBionic FullJammy TinyJammy BaseJammy Full。 Bionic 是基于 Ubuntu 18.04 (Bionic Beaver),而 Jammy 是基于 Ubuntu 22.04 (Jammy Jellyfish)。 有关详细信息,请参阅 OS 堆栈建议部分。

建议使用 Jammy OS Stack 来创建生成器,因为 VMware 即将弃用 Bionic OS Stack

Azure 门户中“添加生成器”页的屏幕截图,其中突出显示了 OS 堆栈和选定的生成包名称。

生成器未在部署中使用时,你还可以编辑自定义生成器。 可以更新 buildpack 或 OS 堆栈,但生成器名称为只读。

Azure 门户中“生成服务”页的屏幕截图,其中突出显示了省略号按钮和“编辑生成器”菜单选项。

生成器是持续为部署做出贡献的资源。 它提供最新的运行时映像和最新的生成包。

使用生成器生成现有活动部署时,不能删除生成器。 若要删除此状态下的生成器,请使用以下步骤:

  1. 将配置另存为新生成器。
  2. 使用新生成器部署应用。 部署链接到新生成器。
  3. 将上一个生成器下的部署迁移到新生成器。
  4. 删除原始生成器。

OS 堆栈建议

在 Azure Spring Apps 中,建议使用 Jammy OS Stack 创建生成器,因为 VMware 已计划弃用 Bioinic OS Stack。 以下列表描述了可用的选项:

  • Jammy Tiny:适用于生成最小映像,以获得尽可能小的尺寸和安全足迹。 与生成 Java 本机映像一样,它可以缩小最终容器映像。 集成库有限。 例如,无法连接到应用实例进行故障排除,因为没有 shell 库。

    • 大多数 Go 应用。
    • Java 应用。 某些 Apache Tomcat 配置选项(例如设置 bin/setenv.sh)不可用,因为 Tiny 没有 shell
  • Jammy Base:适用于大多数没有本机扩展的应用。

    • Java 应用和 .NET Core 应用。
    • 需要某些 C 库的 Go 应用。
    • 没有本机扩展的 Node.js、Python 或 Web 服务器应用。
  • Jammy Full:包括大多数库,适用于具有本机扩展的应用。 例如,它包含更完整的字体库。 如果应用依赖于本机扩展,请使用 Full 堆栈。

    • 使用本机扩展的 Node.js 或 Python 应用。

有关详细信息,请参阅 VMware 文档中的 Ubuntu 堆栈

管理容器注册表

本部分介绍在使用自己的容器注册表启用生成服务的情况下如何管理生成服务使用的容器注册表。 如果使用 Azure Spring Apps 托管容器注册表启用生成服务,则可以跳过本部分。

使用生成服务启用用户容器注册表后,可以使用 Azure 门户或 Azure CLI 显示和配置注册表。

使用以下步骤显示、添加、编辑和删除容器注册表:

  1. 打开 Azure 门户

  2. 在导航窗格中选择“容器注册表”

  3. 选择“添加”以创建容器注册表

    Azure 门户中“容器注册表”页的屏幕截图,其中突出显示了“添加容器注册表”按钮。

  4. 对于容器注册表,请选择省略号 (...) 按钮,然后选择“编辑”以查看注册表配置

    Azure 门户中“容器注册表”页的屏幕截图。

  5. 查看“编辑容器注册表”页上的值

    Azure 门户中“容器注册表”页的屏幕截图,其中的“编辑容器注册表”窗格处于打开状态。

  6. 若要删除容器注册表,请选择省略号 (...) 按钮,然后选择“删除”以删除注册表。 如果生成服务在使用容器注册表,则无法将其删除。

    Azure 门户中“容器注册表”页的屏幕截图,其中的“编辑容器注册表”窗格处于打开状态,并突出显示了“用户名和密码”框。

生成服务可以使用容器注册表,也可以更改关联的容器注册表。 此过程非常耗时。 发生更改时,生成服务下的所有生成器和生成资源都会重新生成,然后将最终容器映像推送到新的容器注册表。

使用以下步骤切换与生成服务关联的容器注册表:

  1. 打开 Azure 门户

  2. 在导航窗格中选择“生成服务”

  3. 选择“引用的容器注册表”以更新生成服务的容器注册表

    Azure 门户中“生成服务”页的屏幕截图,其中突出显示了引用的容器注册表。

生成和部署多语言应用程序

可以使用容器注册表通过以下方式生成和部署多语言应用程序:

  • 对于使用 Azure Spring Apps 托管容器注册表的生成服务,可以将应用程序生成为映像,然后将其部署到当前 Azure Spring Apps 服务实例。 使用 az spring app deploy 命令可同时执行生成和部署。

  • 对于使用用户管理的容器注册表的生成服务,可以将应用程序生成为容器映像,然后将该映像部署到当前的 Azure Spring Apps 企业实例和其他实例。 生成命令和部署命令是分开的。 可以使用生成命令创建或更新生成,然后使用部署命令将容器映像部署到服务实例。

有关详细信息,请参阅使用 Tanzu 生成服务按需生成服务部分。

以下示例演示了要使用的一些实用生成命令。

az configure --defaults group=<resource-group-name> spring=<service-name>

az spring build-service build list
az spring build-service build show --name <build-name>
az spring build-service build create --name <build-name> --artifact-path <artifact-path>
az spring build-service build update --name <build-name> --artifact-path <artifact-path>
az spring build-service build delete --name <build-name>

以下 Azure CLI 示例演示如何为两个容器注册表方案生成和部署生成工件文件:

  • Azure Spring Apps 托管容器注册表。
  • 用户管理的容器注册表。

此示例使用一个命令完成生成和部署。 以下命令指定了一个生成器,用于将应用程序生成为容器映像,然后将应用程序直接部署到 Azure Spring Apps 企业服务实例。

如果未指定生成器,则使用 default 生成器。

az spring app deploy \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --builder <builder-name> \
    --artifact-path <path-to-your-JAR-file>

如果使用生成工件文件部署应用,请使用 --artifact-path 来指定文件路径。 JAR 和 WAR 文件都可接受。

如果 Azure CLI 检测到精简 JAR 形式的 WAR 包,则使用 --disable-validation 来禁用验证。

以下示例使用 --source-path 参数指定文件夹,从而将源代码文件夹部署到活动部署。

az spring app deploy \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --builder <builder-name> \
    --source-path <path-to-source-code>

还可以配置生成环境以生成应用。 例如,在 Java 应用程序中,可以使用 BP_JVM_VERSION 生成环境指定 JDK 版本。

若要指定生成环境,请使用 --build-env,如以下示例所示。 本文稍后将介绍可用的生成环境变量。

以下命令部署应用程序:

az spring app deploy \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --build-env <key1=value1> <key2=value2> \
    --builder <builder-name> \
    --artifact-path <path-to-your-JAR-file>

对于每个生成,还可以指定生成资源,如以下示例所示。

以下命令部署应用程序:

az spring app deploy \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-instance-name> \
    --name <app-name> \
    --build-env <key1=value1> <key2=value2> \
    --build-cpu <build-cpu-size> \
    --build-memory <build-memory-size> \
    --builder <builder-name> \
    --artifact-path <path-to-your-JAR-file>

默认生成 CPU/内存资源为 1 vCPU, 2 Gi。 如果应用程序需要更小或更大的内存量,则使用 --build-memory 指定内存资源,例如 500Mi1Gi2Gi 等等。 如果应用程序需要更小或更大的 CPU 资源,则使用 --build-cpu 指定 CPU 资源,例如 500m12 等等。 一次生成的最大 CPU/内存资源限制为 8 vCPU, 16Gi

CPU 和内存资源受生成服务代理池大小的限制。 有关详细信息,请参阅使用 Tanzu 生成服务生成代理池部分。 处理生成资源配额的总和不能超过代理池大小。

并行生成任务数量取决于代理池大小和每个生成资源。 例如,如果生成资源是默认值 1 vCPU, 2 Gi,代理池大小为 6 vCPU, 12 Gi,则并行生成数量为 6。

由于资源配额限制,其他生成任务会被阻止一段时间。

应用程序必须在端口 8080 上进行侦听。 Spring Boot 应用程序将替代 SERVER_PORT,自动使用 8080。

支持的部署语言

下表说明了每种语言支持的功能。

功能 Java Python 节点 .NET Core Go 静态文件 Java 本机映像 PHP
应用生命周期管理 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
分配终结点 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Azure Monitor ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
现成的 APM 集成 ✔️
蓝/绿部署 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
自定义域 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
缩放 - 自动缩放 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
缩放 - 手动缩放(横向缩减/扩展、纵向扩展/缩减) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
托管的标识 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
VMware Tanzu 的 API 门户 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
VMware Tanzu 的 Spring Cloud 网关 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
VMware Tanzu 的应用程序配置服务 ✔️ ✔️
VMware Tanzu 服务注册表 ✔️ ✔️
适用于 VMware Tanzu 的应用实时视图 ✔️ ✔️
虚拟网络 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
传出 IP 地址 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
E2E TLS ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
高级故障排除 - 线程/堆/JFR 转储 ✔️
自带存储空间 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
将服务绑定与资源连接器集成 ✔️ ✔️
可用性区域 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
应用程序生命周期事件 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
减小应用大小 - 0.5 vCPU 和 512 MB ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
使用 Terraform 和 Azure Pipeline 任务自动执行应用部署 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
软删除 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
交互式诊断体验(基于 AppLens) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
SLA ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
自定义运行状况探测 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
用于故障排除的 Web shell 连接 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ️ ✔️ ✔️
远程调试 ✔️

有关不同语言应用支持的配置的详细信息,请参阅本文后面的相应部分。

Java 本机映像限制

本机映像是一种将 Java 代码提前编译为本机可执行文件的技术。 本机映像提供各种优势,例如即时启动和减少内存消耗。 可以将本机映像打包到轻型容器映像中,以便更快、更高效地进行部署。 由于封闭式世界优化,存在以下限制

  • 以下 Java 功能需要在可执行文件生成时进行配置:
    • 动态类加载
    • 反射
    • 动态代理
    • JNI(Java 本机接口)
    • 序列化
  • 字节码在运行时不再可用,因此无法使用针对 JVMTI 的工具进行调试和监视。

由于 Java 本机映像的限制,Azure Spring Apps 不支持以下功能。 当 Java 本机映像和社区克服限制时,Azure Spring Apps 将支持这些功能。

功能 为什么不受支持
Azure Monitor GraalVM 生成的本机映像不支持 JVM 指标。
缩放 - 自动缩放 GraalVM 生成的本机映像不支持 JVM 指标。
现成的 APM 集成 APM 供应商和生成包不支持本机映像。
托管的标识 Azure SDK 不支持本机映像。
高级故障排除 - 线程/堆/JFR 转储 GraalVM 生成的本机映像不支持线程/堆/JFR 转储。
远程调试 GraalVM 本机映像不支持远程调试。
使用服务连接器的无密码连接 Azure Java SDK 不支持本机映像。

注意

在以下不同语言的生成和部署配置部分中,--build-env 表示环境在生成阶段使用。 --env 表示环境在运行时阶段使用。

建议指定语言版本,以防默认版本更改。 例如,使用 --build-env BP_JVM_VERSION=11.* 将 Java 11 指定为 JDK 版本。 对于其他语言,可以在以下每种语言的说明中获取环境变量名称。

部署 Java 应用程序

用于部署 Java 应用程序的生成包是 tanzu-buildpacks/java-azure

下表列出了 Azure Spring Apps 中支持的功能:

功能描述 注释 环境变量 使用情况
提供 Microsoft OpenJDK。 配置 JVM 版本。 默认的 JDK 版本为 17。 目前支持:JDK 8、11、17 和 21。 BP_JVM_VERSION --build-env BP_JVM_VERSION=11.*
运行时环境。 配置是否启用 Java 本机内存跟踪 (NMT)。 默认值为 true。 JDK 8 中不支持。 BPL_JAVA_NMT_ENABLED --env BPL_JAVA_NMT_ENABLED=true
配置 Java 本机内存跟踪 (NMT) 输出的详细信息级别。 默认值为 summary。 设置为 detail,以获取详细的 NMT 输出 BPL_JAVA_NMT_LEVEL --env BPL_JAVA_NMT_ENABLED=summary
在生成和运行时将 CA 证书添加到系统信任存储。 请参阅如何配置 APM 集成和 CA 证书为应用生成和部署配置 CA 证书部分。 空值 空值
与 Application Insights、Dynatrace、Elastic、New Relic、App 动态 APM 代理集成。 请参阅如何配置 APM 集成和 CA 证书 空值 空值
使用 Apache Tomcat 或 TomEE 部署 WAR 包。 设置要使用的应用程序服务器。 设置为 tomcat 则使用 Tomcat,设置为 tomee 则使用 TomEE。 默认值为 tomcat BP_JAVA_APP_SERVER --build-env BP_JAVA_APP_SERVER=tomee
支持 Spring Boot 应用程序。 指示是否在生成时为映像提供 Spring Cloud 绑定支持。 默认值是 false BP_SPRING_CLOUD_BINDINGS_DISABLED --build-env BP_SPRING_CLOUD_BINDINGS_DISABLED=false
指示是否在运行时从绑定中自动配置 Spring Boot 环境属性。 此功能要求在生成时已安装 Spring Cloud 绑定,否则它将不起作用。 默认值是 false BPL_SPRING_CLOUD_BINDINGS_DISABLED --env BPL_SPRING_CLOUD_BINDINGS_DISABLED=false
支持从源生成基于 Maven 的应用程序。 用于多模块项目。 指示要在其中查找应用程序生成工件的模块。 默认为根模块(空)。 BP_MAVEN_BUILT_MODULE --build-env BP_MAVEN_BUILT_MODULE=./gateway
支持从源生成基于 Gradle 的应用程序。 用于多模块项目。 指示要在其中查找应用程序生成工件的模块。 默认为根模块(空)。 BP_GRADLE_BUILT_MODULE --build-env BP_GRADLE_BUILT_MODULE=./gateway
在创建的映像上启用标签配置。 在单个环境变量中使用短环境变量名称配置 OCI 指定的标签,以及使用空格分隔语法配置任意标签。 BP_IMAGE_LABELS
BP_OCI_AUTHORS
此处查看更多环境变量。
--build-env BP_OCI_AUTHORS=<value>
集成 JProfiler 代理。 指示是否集成 JProfiler 支持。 默认值是 false BP_JPROFILER_ENABLED 生成阶段:
--build-env BP_JPROFILER_ENABLED=true
运行时阶段:
--env BPL_JPROFILER_ENABLED=true
BPL_JPROFILER_PORT=<port>(可选,默认为 8849)
BPL_JPROFILER_NOWAIT=true(可选。指示在附加 JProfiler 之前,JVM 是否应该继续执行。默认值为“true”。)
指示是否在运行时启用 JProfiler 支持。 默认值是 false BPL_JPROFILER_ENABLED --env BPL_JPROFILER_ENABLED=false
指示 JProfiler 代理侦听的端口。 默认值为 8849 BPL_JPROFILER_PORT --env BPL_JPROFILER_PORT=8849
指示在附加 JProfiler 之前,JVM 是否应该继续执行。 默认值为 true BPL_JPROFILER_NOWAIT --env BPL_JPROFILER_NOWAIT=true
集成 JRebel 代理。 应用程序应包含 rebel-remote.xml 文件。 空值 空值
AES 在生成时加密应用程序,然后在启动时对其进行解密。 在生成时使用的 AES 密钥。 BP_EAR_KEY --build-env BP_EAR_KEY=<value>
在运行时使用的 AES 密钥。 BPL_EAR_KEY --env BPL_EAR_KEY=<value>
集成 AspectJ Weaver 代理。 <APPLICATION_ROOT>/aop.xml 存在,且 aspectj-weaver.*.jar 存在。 空值 空值

部署 .NET 应用程序

用于部署 .NET 应用程序的生成包为 tanzu-buildpacks/dotnet-core

下表列出了 Azure Spring Apps 中支持的功能:

功能描述 注释 环境变量 使用情况
配置 .NET Core 运行时版本。 支持 Net6.0Net8.0
可以通过 runtimeconfig.json 或 MSBuild 项目文件进行配置
默认运行时为 6.0.*
空值 空值
在生成和运行时将 CA 证书添加到系统信任存储。 请参阅如何配置 APM 集成和 CA 证书为应用生成和部署配置 CA 证书部分。 空值 空值
与 Dynatrace 和 New Relic APM 代理集成。 请参阅如何配置 APM 集成和 CA 证书 空值 空值
在创建的映像上启用标签配置。 在单个环境变量中使用短环境变量名称配置 OCI 指定的标签,以及使用空格分隔语法配置任意标签。 BP_IMAGE_LABELS
BP_OCI_AUTHORS
此处查看更多环境变量。
--build-env BP_OCI_AUTHORS=<value>

部署 Python 应用程序

用于部署 Python 应用程序的生成包为 tanzu-buildpacks/python

下表列出了 Azure Spring Apps 中支持的功能:

功能描述 注释 环境变量 使用情况
指定 Python 版本。 支持 3.8.*、3.9.*、3.10.*、3.11.*、3.12.*。 默认值为 3.10.*
可以在生成过程中通过 BP_CPYTHON_VERSION 环境变量指定版本。
BP_CPYTHON_VERSION --build-env BP_CPYTHON_VERSION=3.8.*
在生成和运行时将 CA 证书添加到系统信任存储。 请参阅如何配置 APM 集成和 CA 证书为应用生成和部署配置 CA 证书部分。 空值 空值
在创建的映像上启用标签配置。 在单个环境变量中使用短环境变量名称配置 OCI 指定的标签,以及使用空格分隔语法配置任意标签。 BP_IMAGE_LABELS
BP_OCI_AUTHORS
此处查看更多环境变量。
--build-env BP_OCI_AUTHORS=<value>

部署 Go 应用程序

用于部署 Go 应用程序的生成包为 tanzu-buildpacks/go

下表列出了 Azure Spring Apps 中支持的功能:

功能描述 注释 环境变量 使用情况
指定 Go 版本。 支持 1.21.*、1.22.*。 默认值为 1.21.*
从应用的 go.mod 文件中自动检测到 Go 版本。 可以通过在生成时设置 BP_GO_VERSION 环境变量来替代此版本。
BP_GO_VERSION --build-env BP_GO_VERSION=1.22.*
配置多个目标。 为 Go 生成指定多个目标。 BP_GO_TARGETS --build-env BP_GO_TARGETS=./some-target:./other-target
在生成和运行时将 CA 证书添加到系统信任存储。 请参阅如何配置 APM 集成和 CA 证书为应用生成和部署配置 CA 证书部分。 空值 空值
与 Dynatrace APM 代理集成。 请参阅如何配置 APM 集成和 CA 证书 空值 空值
在创建的映像上启用标签配置。 在单个环境变量中使用短环境变量名称配置 OCI 指定的标签,以及使用空格分隔语法配置任意标签。 BP_IMAGE_LABELS
BP_OCI_AUTHORS
此处查看更多环境变量。
--build-env BP_OCI_AUTHORS=<value>

部署 Node.js 应用程序

用于部署 Node.js 应用程序的生成包为 tanzu-buildpacks/nodejs

下表列出了 Azure Spring Apps 中支持的功能:

功能描述 注释 环境变量 使用情况
指定 Node 版本。 支持 16.*、18.*、19.*、20.*。 默认值为 20.*
可以通过应用程序目录根目录中的 .nvmrc 或 .node-version 文件指定 Node 版本BP_NODE_VERSION 会覆盖这些设置。
BP_NODE_VERSION --build-env BP_NODE_VERSION=20.*
在生成和运行时将 CA 证书添加到系统信任存储。 请参阅如何配置 APM 集成和 CA 证书为应用生成和部署配置 CA 证书部分。 空值 空值
与 Dynatrace、Elastic、New Relic、App 动态 APM 代理集成。 请参阅如何配置 APM 集成和 CA 证书 空值 空值
在创建的映像上启用标签配置。 在单个环境变量中使用短环境变量名称配置 OCI 指定的标签,以及使用空格分隔语法配置任意标签。 BP_IMAGE_LABELS
BP_OCI_AUTHORS
此处查看更多环境变量。
--build-env BP_OCI_AUTHORS=<value>
使用 Angular Live 开发服务器部署 Angular 应用程序。 package.json 中运行 ng serve 之前指定主机:ng serve --host 0.0.0.0 --port 8080 --public-host <your application domain name>。 应用程序的域名可在应用程序“概述”页找到,位于 URL 部分。 在继续操作之前删除协议 https:// BP_NODE_RUN_SCRIPTS
NODE_ENV
--build-env BP_NODE_RUN_SCRIPTS=build NODE_ENV=development

部署 WebServer 应用程序

用于部署 WebServer 应用程序的生成包是 tanzu-buildpacks/web-servers

有关详细信息,请参阅部署 Web 静态文件

部署 Java 本机映像应用程序(预览版)

用于部署 Java 本机映像应用程序的生成包是 tanzu-buildpacks/java-native-image

可以使用 tanzu-buildpacks/java-native-image 生成包部署 Spring Boot 本机映像应用程序。 Spring 本机支持将 Spring Boot 应用程序编译为本机可执行文件。 生成包使用 Liberica 本机映像工具包 (NIK) 创建 Spring Boot 应用程序的本机映像,并且完全支持这些应用程序。

生成 Java 本机映像时,必须将生成环境 BP_NATIVE_IMAGE 设置为 true,且生成内存资源不应小于 8Gi。 生成服务代理池大小不应小于 4 vCPU, 8 Gi。 有关详细信息,请参阅使用 Tanzu 生成服务生成代理池部分。

如果要将本机映像生成为较小的容器映像,建议使用具有 Jammy Tiny OS 堆栈的生成器。 有关详细信息,请参阅 OS 堆栈建议部分。

下表列出了 Azure Spring Apps 中支持的功能:

功能描述 注释 环境变量 使用情况
与 Bellsoft OpenJDK 集成。 配置 JDK 版本。 目前支持:JDK 8、11、17 和 21。 BP_JVM_VERSION --build-env BP_JVM_VERSION=17
native-image 命令配置参数。 直接传递给 native-image 命令的参数。 这些参数必须有效且格式正确,否则 native-image 命令将失败。 BP_NATIVE_IMAGE_BUILD_ARGUMENTS --build-env BP_NATIVE_IMAGE_BUILD_ARGUMENTS="--no-fallback"
在生成和运行时将 CA 证书添加到系统信任存储。 请参阅如何配置 APM 集成和 CA 证书 不适用。 不适用。
在创建的映像上启用标签配置 在单个环境变量中使用短环境变量名称配置 OCI 指定的标签,以及使用空格分隔语法配置任意标签。 BP_IMAGE_LABELS
BP_OCI_AUTHORS
此处查看更多环境变量。
--build-env BP_OCI_AUTHORS=<value>
支持从源生成基于 Maven 的应用程序。 用于多模块项目。 指示要在其中查找应用程序生成工件的模块。 默认为根模块(空)。 BP_MAVEN_BUILT_MODULE --build-env BP_MAVEN_BUILT_MODULE=./gateway

Java 本机映像存在一些限制。 有关详细信息,请参阅 Java 本机映像限制部分。

部署 PHP 应用程序

用于部署 PHP 应用程序的生成包为 tanzu-buildpacks/php

Tanzu PHP 生成包仅与完整 OS 堆栈兼容。 建议使用具有 Jammy Full OS 堆栈的生成器。 有关详细信息,请参阅 OS 堆栈建议部分。

下表列出了 Azure Spring Apps 中支持的功能:

功能描述 注释 环境变量 使用情况
指定 PHP 版本。 配置 PHP 版本。 目前支持:PHP 8.1.*、8.2.* 和 8.3.*。 默认值为 8.1.* BP_PHP_VERSION --build-env BP_PHP_VERSION=8.1.*
在生成和运行时将 CA 证书添加到系统信任存储。 请参阅如何配置 APM 集成和 CA 证书为应用生成和部署配置 CA 证书部分。 空值 空值
与 Dynatrace、New Relic、App 动态 APM 代理集成。 请参阅如何配置 APM 集成和 CA 证书 空值 空值
选择 Web 服务器。 设置选项为 php-server、httpd 和 nginx。 默认值为 php-server BP_PHP_SERVER --build-env BP_PHP_SERVER=httpd
配置 Web 目录。 当 Web 服务器为 HTTPD 或 NGINX 时,Web 目录默认为 htdocs。 当 Web 服务器为 PHP 内置服务器时,Web 目录默认为 /workspace BP_PHP_WEB_DIR --build-env BP_PHP_WEB_DIR=htdocs

后续步骤