如何在 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 Azure Buildpack
- 適用於 VMware Tanzu 的 .NET Core Buildpack
- Go Buildpack for VMware Tanzu
- VMware Tanzu 的網頁伺服器 Buildpack
- Node.js VMware Tanzu 的 Buildpack
- 適用於 VMware Tanzu 的 Python Buildpack
- 適用於 VMware Tanzu 的 Java 原生映射組建套件
- 適用於 VMware Tanzu 的 PHP Buildpack
如需詳細資訊,請參閱 VMware Tanzu 的語言系列組建套件。
這些組建套件支援使用 Java、.NET Core、Go、Web 靜態檔案、Node.js和 Python 應用程式的原始程式碼或成品進行建置。 您也可以在建立或檢視建立器期間查看 buildpack 版本。 您可以藉由指定 buildpack 和堆疊來建立自定義建置器。
在 Azure Spring Apps 服務實例中設定的所有建置者都會列在 [建置服務 ] 頁面上,如下列螢幕快照所示:
選取 [新增 ] 以建立新的產生器。 下列螢幕快照顯示您應該用來建立自定義建立器的資源。 OS Stack 包含Bionic Base
、Bionic Full
、Jammy Tiny
Jammy Base
和 Jammy Full
。 布利生是以 Ubuntu 18.04 (Bionic Beaver)
為基礎,Jammy 是以 為基礎 Ubuntu 22.04 (Jammy Jellyfish)
。 如需詳細資訊,請參閱 OS堆疊建議 一節。
建議您使用 Jammy OS Stack
建立您的產生器,因為 VMware 即將淘汰 Bionic OS Stack
。
您也可以在部署中不使用建置器時編輯自定義產生器。 您可以更新 buildpacks 或 OS Stack,但產生器名稱是唯讀的。
建置者是持續參與部署的資源。 它提供最新的運行時間映像和最新的組建套件。
使用建立器建置現有的使用中部署時,您無法刪除產生器。 若要刪除處於此狀態的產生器,請使用下列步驟:
- 將組態儲存為新的產生器。
- 使用新的產生器部署應用程式。 部署會連結至新的產生器。
- 將上一個產生器下的部署移轉至新的產生器。
- 刪除原始產生器。
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 來顯示及設定登錄。
使用下列步驟來顯示、新增、編輯和刪除容器登錄:
開啟 Azure 入口網站。
在瀏覽窗格中選取 [容器登錄 ]。
選取 [新增 ] 以建立容器登錄。
針對容器登錄,選取省略號 (...) 按鈕,然後選取 [ 編輯 ] 以檢視登錄組態。
檢閱 [ 編輯容器登錄 ] 頁面上的值。
若要刪除容器登錄,請選取省略號 (...) 按鈕,然後選取 [ 刪除 ] 以刪除登錄。 如果建置服務使用容器登錄,則無法刪除它。
建置服務可以使用容器登錄,也可以變更相關聯的容器登錄。 此程序相當耗時。 當變更發生時,建置服務重建下的所有建置者和建置資源,最後的容器映像就會推送至新的容器登錄。
使用下列步驟來切換與組建服務相關聯的容器登錄:
開啟 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
來指定記憶體資源,例如 、500Mi
1Gi
、 2Gi
等等。 如果您的應用程式需要較小的或更大的CPU資源,請使用 --build-cpu
來指定CPU資源,例如、500m
1
、 2
等等。 組建的最大 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 以使用 Tomcat 和 tomee 來使用 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.0、 Net7.0 和 Net8.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-image
。 Spring 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-server、 httpd 和 nginx。 預設值為 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 |