Share via


如何在 Azure Spring Apps 企業版方案中部署 Polyglot 應用程式

注意

Azure Spring Apps 是 Azure Spring Cloud 服務的新名稱。 雖然服務有新的名稱,但是您暫時還是會在某些位置看到舊的名稱。我們正在致力更新螢幕擷取畫面、影片和圖表等資產。

本文適用於:❌ 基本/標準✔️企業

本文說明如何在 Azure Spring Apps 企業版方案中部署 Polyglot 應用程式,以及這些 Polyglot 應用程式如何使用 buildpacks 所提供的建置服務功能。

必要條件

  • 已布建的 Azure Spring Apps 企業版方案實例。 如需詳細資訊,請參閱 快速入門:使用企業方案建置和部署應用程式至 Azure Spring Apps。
  • Azure CLI 2.45.0 版或更新版本。 使用下列命令來安裝 Azure Spring Apps 擴充功能: az extension add --name spring

在服務實例中部署polyglot應用程式

本節適用於在啟用建置服務時建置和部署 Polyglot 應用程式。 如果您停用建置服務,則只能使用自訂容器映像來部署應用程式。 您可以建立自己的映像,或使用 Azure Spring Apps Enterprise 實例所建置的映射。 如需詳細資訊,請參閱 使用自定義容器映像部署應用程式。

管理產生器

當您建立 Azure Spring Apps Enterprise 的實例時,您必須從下列其中一個支援的語言系列組建套件中選擇預設產生器:

如需詳細資訊,請參閱 VMware Tanzu 的語言系列組建套件。

這些組建套件支援使用 Java、.NET Core、Go、Web 靜態檔案、Node.js和 Python 應用程式的原始程式碼或成品進行建置。 您也可以在建立或檢視建立器期間查看 buildpack 版本。 您可以藉由指定 buildpack 和堆疊來建立自定義建置器。

在 Azure Spring Apps 服務實例中設定的所有建置者都會列在 [建置服務 ] 頁面上,如下列螢幕快照所示:

顯示 [建置服務] 頁面的 Azure 入口網站 螢幕快照,其中已醒目提示 [建立器] 清單。

選取 [新增 ] 以建立新的產生器。 下列螢幕快照顯示您應該用來建立自定義建立器的資源。 OS Stack 包含Bionic BaseBionic FullJammy TinyJammy BaseJammy Full。 布利生是以 Ubuntu 18.04 (Bionic Beaver) 為基礎,Jammy 是以 為基礎 Ubuntu 22.04 (Jammy Jellyfish)。 如需詳細資訊,請參閱 OS堆疊建議 一節。

建議您使用 Jammy OS Stack 建立您的產生器,因為 VMware 即將淘汰 Bionic OS Stack

顯示 [新增產生器] 頁面的 Azure 入口網站 螢幕快照,其中已醒目提示 OS Stack 和選取的組建套件名稱。

您也可以在部署中不使用建置器時編輯自定義產生器。 您可以更新 buildpacks 或 OS Stack,但產生器名稱是唯讀的。

顯示 [建置服務] 頁面的 Azure 入口網站 螢幕快照,其中已醒目提示省略號按鈕和 [編輯產生器] 功能表選項。

建置者是持續參與部署的資源。 它提供最新的運行時間映像和最新的組建套件。

使用建立器建置現有的使用中部署時,您無法刪除產生器。 若要刪除處於此狀態的產生器,請使用下列步驟:

  1. 將組態儲存為新的產生器。
  2. 使用新的產生器部署應用程式。 部署會連結至新的產生器。
  3. 將上一個產生器下的部署移轉至新的產生器。
  4. 刪除原始產生器。

OS 堆疊建議

在 Azure Spring Apps 中,建議您使用 Jammy OS Stack 來建立您的建立器,因為 Bioinic OS Stack VMware 已排入取代。 下列清單描述可用的選項:

  • Jammy Tiny:適用於為最小可能的大小和安全性使用量建置最小映像。 如同建置 Java Native Image,它可以讓最終的容器映射更小。 整合式連結庫有限。 例如,您無法 連線到應用程式實例以進行疑難解答 ,因為沒有 shell 連結庫。

    • 大部分 Go 應用程式。
    • Java 應用程式。 某些 Apache Tomcat 組態選項,例如設定 bin/setenv.sh,無法使用,因為 Tiny 沒有殼層。
  • Jammy Base:適用於大部分沒有原生擴充功能的應用程式。

    • Java 應用程式和 .NET Core 應用程式。
    • 移至需要一些 C 連結庫的應用程式。
    • Node.js、Python 或 Web Server 應用程式沒有原生擴充功能。
  • Jammy Full:包含大部分的連結庫,且適用於具有原生擴充功能的應用程式。 例如,它包含更完整的字型連結庫。 如果您的應用程式依賴原生擴充功能,請使用 Full 堆疊。

    • 使用原生擴充功能Node.js或 Python 應用程式。

如需詳細資訊,請參閱 VMware 檔中的 Ubuntu Stack

管理容器登錄

本節說明當您使用自己的容器登錄啟用組建服務時,如何管理建置服務所使用的容器登錄。 如果您使用 Azure Spring Apps 受控容器登錄來啟用建置服務,您可以略過本節。

使用建置服務啟用使用者容器登錄之後,您可以使用 Azure 入口網站 或 Azure CLI 來顯示及設定登錄。

使用下列步驟來顯示、新增、編輯和刪除容器登錄:

  1. 開啟 Azure 入口網站

  2. 在瀏覽窗格中選取 [容器登錄 ]。

  3. 選取 [新增 ] 以建立容器登錄。

    顯示 [容器登錄] 頁面的 Azure 入口網站 螢幕快照,其中顯示 [新增容器登錄] 按鈕。

  4. 針對容器登錄,選取省略號 (...) 按鈕,然後選取 [ 編輯 ] 以檢視登錄組態。

    顯示容器登錄頁面之 Azure 入口網站的螢幕快照。

  5. 檢閱 [ 編輯容器登錄 ] 頁面上的值。

    顯示 [容器登錄] 頁面並開啟 [編輯容器登錄] 窗格的 Azure 入口網站 螢幕快照。

  6. 若要刪除容器登錄,請選取省略號 (...) 按鈕,然後選取 [ 刪除 ] 以刪除登錄。 如果建置服務使用容器登錄,則無法刪除它。

    顯示 [容器登錄] 頁面的 Azure 入口網站 螢幕快照,其中已開啟 [編輯容器登錄] 窗格,並醒目提示 [用戶名稱] 和 [密碼] 方塊。

建置服務可以使用容器登錄,也可以變更相關聯的容器登錄。 此程序相當耗時。 當變更發生時,建置服務重建下的所有建置者和建置資源,最後的容器映像就會推送至新的容器登錄。

使用下列步驟來切換與組建服務相關聯的容器登錄:

  1. 開啟 Azure 入口網站

  2. 在瀏覽窗格中選取 [建置服務 ]。

  3. 選取 [參考的容器登錄 ] 以更新組建服務的容器登錄。

    顯示已醒目提示參考容器登錄之 [建置服務] 頁面的 Azure 入口網站 螢幕快照。

建置和部署polyglot應用程式

您可以使用容器登錄,以下列方式建置和部署 polyglot 應用程式:

  • 針對使用 Azure Spring Apps 受控容器登錄的建置服務,您可以將應用程式建置至映像,然後將它部署到目前的 Azure Spring Apps 服務實例。 建置和部署會使用 az spring app deploy 命令一起執行。

  • 針對使用使用者管理的容器登錄建置服務,您可以將應用程式建置至容器映射,然後將映像部署到目前的 Azure Spring Apps Enterprise 實例和其他實例。 建置和部署命令是分開的。 您可以使用 build 命令來建立或更新組建,然後使用 deploy 命令將容器映射部署至服務實例。

如需詳細資訊,請參閱使用 Tanzu Build Service建置服務隨選一節。

下列範例顯示一些有用的建置命令使用。

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 Enterprise 服務實例。

如果您未指定建立器,則會使用產生 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 偵測到 WAR 套件為精簡 JAR,請使用 --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 應用程式中,您可以使用建置環境來指定 JDK 版本 BP_JVM_VERSION

若要指定建置環境,請使用 --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 Build Service建置代理程式集區一節。 處理組建資源配額的總和不能超過代理程式集區大小。

建置工作的平行數目取決於代理程式集區大小和每個組建資源。 例如,如果組建資源是預設值 1 vCPU, 2 Gi ,而代理程式集區大小為 6 vCPU, 12 Gi,則平行組建編號為 6。

因為資源配額限制,其他建置工作會封鎖一段時間。

您的應用程式必須在埠 8080 上接聽。 Spring Boot 應用程式會覆寫 SERVER_PORT 以自動使用 8080。

部署支持的語言

下表指出每個語言支援的功能。

功能 Java Python 節點 .NET Core Go 靜態檔案 Java 原生映像 PHP
應用程式生命週期管理 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
指派端點 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Azure 監視器 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
現成的 APM 整合 ✔️
藍/綠部署 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
自訂網域 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
調整 - 自動調整 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
調整 - 手動調整(放大/放大、向上/向下) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
受控識別 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
VMware Tanzu 的 API 入口網站 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
適用於 VMware Tanzu 的 Spring Cloud Gateway ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
VMware Tanzu 的應用程式組態服務 ✔️ ✔️
VMware Tanzu 服務登錄 ✔️ ✔️
VMware Tanzu 的應用程式實時檢視 ✔️ ✔️
虛擬網路 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
傳出IP位址 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
E2E TLS ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
進階疑難解答 - 線程/堆積/JFR 傾印 ✔️
使用自己的儲存體 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
整合服務系結與 Resource 連線 or ✔️ ✔️
可用性區域 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
應用程式生命週期事件 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
減少應用程式大小 - 0.5 個 vCPU 和 512 MB ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
使用 Terraform 和 Azure Pipeline 工作將應用程式部署自動化 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
虛刪除 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
互動式診斷體驗 (以 AppLens 為基礎) ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
SLA ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
自定義健康情況探查 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
用於疑難解答的 Web 殼層連線 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ️ ✔️ ✔️
遠端偵錯 ✔️

如需不同語言應用程式支援組態的詳細資訊,請參閱本文稍後的對應一節。

Java 原生映像限制

原生映像 是預先編譯 Java 程式代碼到原生可執行文件的技術。 原生映像提供各種優點,例如立即啟動和減少記憶體耗用量。 您可以將原生映像封裝成輕量型容器映像,以更快速且更有效率地部署。 由於封閉式世界優化,因此適用下列 限制

  • 下列 Java 功能需要在可執行檔建置階段進行設定:
    • 動態類別載入
    • 反映
    • 動態 Proxy
    • JNI (Java 原生介面)
    • 序列化
  • 位元組程式代碼已無法在運行時間使用,因此無法使用以 JVMTI 為目標的工具進行偵錯和監視。

Azure Spring Apps 不支援下列功能,因為 Java 原生映像的限制。 當 Java 原生映射和社群克服限制時,Azure Spring Apps 將支持它們。

功能 為何不支援
Azure 監視器 GraalVM 建置的原生映像不支援 JVM 計量。
調整 – 自動調整 GraalVM 建置的原生映像不支援 JVM 計量。
現成的 APM 整合 APM 廠商和 Buildpack 不支援原生映像。
受控識別 Azure SDK 不支援原生映像。
進階疑難解答 – 線程/堆積/JFR 傾印 GraalVM 建置的原生映像不支援線程/堆積/JFR 傾印。
遠端偵錯 GraalVM 原生映像不支持遠端偵錯。
使用服務 連線 or 的無密碼連線 Azure Java SDK 不支援原生映像。

注意

在下列不同的語言建置和部署組態區段中, --build-env 表示環境會在建置階段中使用。 --env 表示環境用於運行時間階段。

建議您指定語言版本,以防預設版本變更。 例如,使用 --build-env BP_JVM_VERSION=11.* 將 Java 11 指定為 JDK 版本。 對於其他語言,您可以在下列每個語言的描述中取得環境變數名稱。

部署Java應用程式

用於部署Java應用程式的buildpack是 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.*
運行時間 env。 設定是否啟用 Java Native Memory Tracking (NMT)。 預設值為 true。 JDK 8 不支援。 BPL_JAVA_NMT_ENABLED --env BPL_JAVA_NMT_ENABLED=true
設定 Java Native Memory Tracking (NMT) 輸出的詳細數據層級。 預設值為 summary。 設定為 詳細 NMT 輸出的詳細 數據。 BPL_JAVA_NMT_LEVEL --env BPL_JAVA_NMT_ENABLED=summary
在組建和運行時間將 CA 憑證新增至系統信任存放區。 請參閱如何設定 APM 整合和 CA 憑證的應用程式組建和部署的 CA 憑證一節 N/A N/A
與 Application Insights、Dynatrace、Elastic、New Relic、應用程式動態 APM 代理程式整合。 請參閱 如何設定 APM 整合和 CA 憑證 N/A N/A
使用 Apache Tomcat 或 TomEE 部署 WAR 套件。 設定要使用的應用程式伺服器。 將 設定為 tomcat 以使用 Tomcattomee 來使用 TomEE。 預設值為 tomcat BP_JAVA_APP_SERVER --build-env BP_JAVA_APP_SERVER=tomee
支援 Spring Boot 應用程式。 指出是否要在建置時為映像提供 Spring Cloud Bindings 支援。 預設值為 false BP_SPRING_CLOUD_BINDINGS_DISABLED --build-env BP_SPRING_CLOUD_BINDINGS_DISABLED=false
指出是否要在運行時間從系結自動設定 Spring Boot 環境屬性。 這項功能需要 Spring Cloud Bindings 已在建置階段安裝,或不會執行任何動作。 預設值為 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 (選擇性。指出 JVM 是否在附加 JProfiler 之前執行。預設值為 true。)
指出是否要在運行時間啟用 JProfiler 支援。 預設值為 false BPL_JPROFILER_ENABLED --env BPL_JPROFILER_ENABLED=false
指出 JProfiler 代理程式接聽的埠。 預設值為 8849 BPL_JPROFILER_PORT --env BPL_JPROFILER_PORT=8849
指出 JVM 是否在附加 JProfiler 之前執行。 預設值為 true BPL_JPROFILER_NOWAIT --env BPL_JPROFILER_NOWAIT=true
整合 JRebel 代理程式。 應用程式應該包含 rebel-remote.xml 檔案。 N/A N/A
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存在。 N/A N/A

部署 .NET 應用程式

用於部署 .NET 應用程式的 buildpack 是 tanzu-buildpacks/dotnet-core

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

功能描述 註解 環境變數 使用方式
設定 .NET Core 執行時間版本。 支援 Net6.0Net7.0Net8.0
您可以透過 runtimeconfig.json 或 MSBuild 專案檔進行設定。
默認運行時間為 6.0.*
N/A N/A
在組建和運行時間將 CA 憑證新增至系統信任存放區。 請參閱如何設定 APM 整合和 CA 憑證的應用程式組建和部署的 CA 憑證一節 N/A N/A
與 Dynatrace 和 New Relic APM 代理程式整合。 請參閱 如何設定 APM 整合和 CA 憑證 N/A N/A
在建立的映像上啟用標籤的設定。 在單一環境變數中使用空格分隔語法,設定具有簡短環境變數名稱和任意標籤的 OCI 指定標籤。 BP_IMAGE_LABELS
BP_OCI_AUTHORS
如需更多環境變數 ,請參閱這裡
--build-env BP_OCI_AUTHORS=<value>

部署 Python 應用程式

用於部署 Python 應用程式的 buildpack 是 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 憑證一節 N/A N/A
在建立的映像上啟用標籤的設定。 在單一環境變數中使用空格分隔語法,設定具有簡短環境變數名稱和任意標籤的 OCI 指定標籤。 BP_IMAGE_LABELS
BP_OCI_AUTHORS
如需更多環境變數 ,請參閱這裡
--build-env BP_OCI_AUTHORS=<value>

部署 Go 應用程式

用於部署 Go 應用程式的 buildpack 是 tanzu-buildpacks/go

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

功能描述 註解 環境變數 使用方式
指定 Go 版本。 支援 1.20.*1.21.*。 預設值為 1.20.*
從應用程式的 go.mod 檔案自動偵測到 Go 版本。 您可以在建置階段設定環境變數, BP_GO_VERSION 以覆寫此版本。
BP_GO_VERSION --build-env BP_GO_VERSION=1.20.*
設定多個目標。 指定 Go 組建的多個目標。 BP_GO_TARGETS --build-env BP_GO_TARGETS=./some-target:./other-target
在組建和運行時間將 CA 憑證新增至系統信任存放區。 請參閱如何設定 APM 整合和 CA 憑證的應用程式組建和部署的 CA 憑證一節 N/A N/A
與 Dynatrace APM 代理程式整合。 請參閱 如何設定 APM 整合和 CA 憑證 N/A N/A
在建立的映像上啟用標籤的設定。 在單一環境變數中使用空格分隔語法,設定具有簡短環境變數名稱和任意標籤的 OCI 指定標籤。 BP_IMAGE_LABELS
BP_OCI_AUTHORS
如需更多環境變數 ,請參閱這裡
--build-env BP_OCI_AUTHORS=<value>

部署Node.js應用程式

用於部署Node.js應用程式的buildpack是 tanzu-buildpacks/nodejs

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

功能描述 註解 環境變數 使用方式
指定節點版本。 支援 16.*18.*19.*、20.*。 預設值為 20.*
您可以透過 應用程式目錄根目錄的 .nvmrc.node-version 檔案來指定節點版本BP_NODE_VERSION 會覆寫設定。
BP_NODE_VERSION --build-env BP_NODE_VERSION=19.*
在組建和運行時間將 CA 憑證新增至系統信任存放區。 請參閱如何設定 APM 整合和 CA 憑證的應用程式組建和部署的 CA 憑證一節 N/A N/A
與 Dynatrace、Elastic、New Relic、應用程式動態 APM 代理程式整合。 請參閱 如何設定 APM 整合和 CA 憑證 N/A N/A
在建立的映像上啟用標籤的設定。 在單一環境變數中使用空格分隔語法,設定具有簡短環境變數名稱和任意標籤的 OCI 指定標籤。 BP_IMAGE_LABELS
BP_OCI_AUTHORS
如需更多環境變數 ,請參閱這裡
--build-env BP_OCI_AUTHORS=<value>
使用 Angular Live Development Server 部署 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 應用程式的 buildpack 是 tanzu-buildpacks/web-servers

如需詳細資訊,請參閱 部署Web靜態檔案

部署 Java 原生映像應用程式 (預覽)

用於部署Java Native Image 應用程式的buildpack是 tanzu-buildpacks/java-native-image

您可以使用 buildpack 部署 Spring Boot 原生映射應用程式 tanzu-buildpacks/java-native-imageSpring Native 支援將 Spring Boot 應用程式編譯成原生可執行檔。 buildpack 會使用 Liberica 原生映射套件 (NIK) 來建立 Spring Boot 應用程式的原生映像,而且完全支援這些應用程式。

當您建置 Java Native Image 時,必須將建置環境 BP_NATIVE_IMAGE 設定為 true ,而組建記憶體資源不應小於 8Gi。 建置服務代理程式集區大小不應小於 4 vCPU, 8 Gi。 如需詳細資訊,請參閱使用 Tanzu Build Service建置代理程式集區一節。

如果您想要將原生映射建置成較小的容器映像,建議您搭配OS堆疊使用建置器 Jammy Tiny 。 如需詳細資訊,請參閱 OS堆疊建議 一節。

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

功能描述 註解 環境變數 使用方式
與 Bellsoft OpenJDK 整合。 設定 JDK 版本。 目前支援:JDK 8、11、17 和 20。 BP_JVM_VERSION --build-env BP_JVM_VERSION=17
設定命令的 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 Native Image 有一些限制。 如需詳細資訊,請參閱 Java Native Image 限制 一節。

部署 PHP 應用程式

用於部署 PHP 應用程式的 buildpack 是 tanzu-buildpacks/php

Tanzu PHP buildpack 只與完整 OS 堆棧相容。 我們建議搭配 Jammy Full OS堆疊使用產生器。 如需詳細資訊,請參閱 OS堆疊建議 一節。

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

功能描述 註解 環境變數 使用方式
指定 PHP 版本。 設定 PHP 版本。 目前支援:PHP 8.1.*8.2.*。 預設值為 8.1.* BP_PHP_VERSION --build-env BP_PHP_VERSION=8.0.*
在組建和運行時間將 CA 憑證新增至系統信任存放區。 請參閱如何設定 APM 整合和 CA 憑證的應用程式組建和部署的 CA 憑證一節 N/A N/A
與 Dynatrace、New Relic、應用程式動態 APM 代理程式整合。 請參閱 如何設定 APM 整合和 CA 憑證 N/A N/A
選取網頁伺服器。 設定選項為 php-serverhttpdnginx。 預設值為 php-server BP_PHP_SERVER --build-env BP_PHP_SERVER=httpd
設定 Web 目錄。 當 Web 伺服器是 HTTPD 或 NGINX 時,Web 目錄預設為 htdocs。 當網頁伺服器是 PHP 內建伺服器時,Web 目錄預設為 /workspace BP_PHP_WEB_DIR --build-env BP_PHP_WEB_DIR=htdocs

下一步