快速入門:將第一個 Java 原生映射應用程式部署至 Azure Spring Apps
注意
基本、標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告。
標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps。
本文適用於: ❎基本/標準 ✅ 企業
本快速入門說明如何將 Spring Boot 應用程式部署至 Azure Spring Apps 作為原生映射。
原生映像 功能可讓您將 Java 應用程式編譯成獨立可執行檔,稱為原生映像。 相較於傳統的 JVM(Java 虛擬機),這些可執行檔可以提供顯著的好處,包括更快的啟動時間和較低的運行時間記憶體額外負荷。
範例專案是 Spring Petclinic 應用程式。 下列螢幕快照顯示應用程式:
1.Prerequisites
- Azure 訂用帳戶。 如果您沒有訂用帳戶,請先建立免費帳戶,再開始操作。
- Git。
- Java Development Kit (JDK)第 17 版。
- Azure CLI 2.45.0 版或更新版本。 使用下列命令,以安裝 Azure Spring 應用程式延伸模組:
az extension add --name spring
- 如果您是第一次在目標訂用帳戶中部署 Azure Spring Apps Enterprise 方案實例,請參閱在 Azure Marketplace 中檢視 Azure Spring Apps 企業層供應專案的需求一節。
2. 準備 Spring Petclinic 專案
使用下列步驟在本機複製並執行應用程式。
使用下列命令從 GitHub 複製 Spring Petclinic 專案:
git clone https://github.com/Azure-Samples/spring-petclinic.git
使用下列命令來建置 Spring Petclinic 專案:
cd spring-petclinic ./mvnw clean package -DskipTests -Pnative package
使用下列命令,使用 Maven 執行 Spring Petclinic 應用程式:
java -jar target/spring-petclinic-3.1.0-SNAPSHOT.jar
在瀏覽器中移至
http://localhost:8080
以存取 Spring Petclinic 應用程式。
3.準備雲端環境
執行 Spring Petclinic 應用程式所需的主要資源是 Azure Spring Apps 實例。 本節提供建立資源的步驟。
3.1. 提供每個資源的名稱
使用下列命令建立變數來保存資源名稱。 請務必將預留位置取代為您自己的值。
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
export AZURE_SPRING_APPS_NAME=<Azure-Spring-Apps-service-instance-name>
export NATIVE_BUILDER=native-builder
export JAR_APP_NAME=jar-app
export NATIVE_APP_NAME=native-app
export JAR_PATH=target/spring-petclinic-3.1.0-SNAPSHOT.jar
3.2. 建立新的資源群組
使用下列步驟來建立新的資源群組:
使用下列命令登入 Azure CLI:
az login
使用下列命令來設定預設位置:
az configure --defaults location=${LOCATION}
使用下列命令來列出所有可用的訂用帳戶,以判斷要使用的訂用帳戶識別碼:
az account list --output table
使用下列命令來設定預設訂用帳戶:
az account set --subscription <subscription-ID>
請使用下列命令來建立資源群組:
az group create --resource-group ${RESOURCE_GROUP}
使用下列命令,將新建立的資源群組設定為預設資源群組:
az configure --defaults group=${RESOURCE_GROUP}
3.3. 建立 Azure Spring Apps 執行個體
Azure Spring Apps 可用來裝載 Spring Petclinic 應用程式。 使用下列步驟來建立 Azure Spring Apps 實例和其中兩個應用程式:
使用下列命令來建立 Azure Spring Apps 服務實例。 原生映像組建在映像建置期間需要 16 Gi 的記憶體,因此請將組建集區大小設定為 S7。
az spring create \ --name ${AZURE_SPRING_APPS_NAME} \ --sku enterprise \ --build-pool-size S7
在目前目錄中建立 builder-native.json 檔案,然後新增下列內容:
{ "stack": { "id": "io.buildpacks.stacks.jammy", "version": "tiny" }, "buildpackGroups": [ { "name": "default", "buildpacks": [ { "id": "tanzu-buildpacks/java-native-image" } ] } ] }
使用下列命令建立自訂產生器來建置 Native Image 應用程式:
az spring build-service builder create \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${NATIVE_BUILDER} \ --builder-file builder-native.json
使用下列命令,在 Azure Spring Apps 實例中建立應用程式,在其中將 Spring Petclinic 應用程式部署為 JAR 檔案。 將記憶體限制設定為 1 Gi。
az spring app create \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${JAR_APP_NAME} \ --cpu 1 \ --memory 1Gi \ --assign-endpoint true
使用下列命令在 Azure Spring Apps 實例中建立應用程式,在其中將 Spring Petclinic 應用程式部署為原生映射:
az spring app create \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${NATIVE_APP_NAME} \ --cpu 1 \ --memory 1Gi \ --assign-endpoint true
4.將應用程式部署至 Azure Spring Apps
現在已備妥雲端環境,應用程式即可部署。
使用下列命令將 Spring Petclinic 應用程式部署為 JAR 檔案:
az spring app deploy \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${JAR_APP_NAME} \
--artifact-path ${JAR_PATH} \
--build-env BP_JVM_VERSION=17
使用下列命令將 Spring Petclinic 應用程式部署為原生映射:
az spring app deploy \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${NATIVE_APP_NAME} \
--builder ${NATIVE_BUILDER} \
--build-cpu 8 \
--build-memory 16Gi \
--artifact-path ${JAR_PATH} \
--build-env BP_JVM_VERSION=17 BP_NATIVE_IMAGE=true
5.驗證原生映像應用程式
現在您可以存取已部署的原生映像應用程式,以查看其是否正常運作。 使用下列步驟來驗證:
部署完成後,您可以執行下列命令來取得應用程式 URL:
az spring app show \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${NATIVE_APP_NAME} \ --output table
您可以使用輸出
Public Url
中顯示的網址來存取應用程式。 當您看到頁面時,頁面應該會顯示為localhost。使用下列命令來檢查應用程式的記錄檔,以調查任何部署問題:
az spring app logs \ --service ${AZURE_SPRING_APPS_NAME} \ --name ${NATIVE_APP_NAME}
6.比較 JAR 和原生映射的效能
下列各節說明如何比較 JAR 與原生映射部署之間的效能。
伺服器啟動時間
使用下列命令來檢查應用程式的記錄 Started PetClinicApplication in XXX seconds
檔,以取得 JAR 應用程式的伺服器啟動時間:
az spring app logs \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${JAR_APP_NAME}
JAR 應用程式的伺服器啟動時間約為 25 秒。
使用下列命令來檢查應用程式的記錄檔,以取得原生映像應用程式的伺服器啟動時間:
az spring app logs \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${NATIVE_APP_NAME}
原生映像應用程式的伺服器啟動時間小於 0.5 秒。
記憶體使用量
使用下列命令,將原生映像應用程式的記憶體大小縮減為 512 Mi:
az spring app scale \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${NATIVE_APP_NAME} \
--memory 512Mi
命令輸出應該會顯示原生映像應用程式已成功啟動。
使用下列命令,將 JAR 應用程式的記憶體大小縮減為 512 Mi:
az spring app scale \
--service ${AZURE_SPRING_APPS_NAME} \
--name ${JAR_APP_NAME} \
--memory 512Mi
命令輸出應該會顯示 JAR 應用程式因為記憶體不足而無法啟動。 輸出訊息應該類似下列範例: Terminating due to java.lang.OutOfMemoryError: Java heap space
。
下圖顯示原生映射部署的優化記憶體使用量,以便將每秒 400 個要求的常數工作負載部署到 Petclinic 應用程式。 記憶體使用量大約是其對等 JAR 部署所耗用的記憶體的 1/5。
相較於傳統的 Java 虛擬機(JVM),原生映像可提供更快的啟動時間,並減少運行時間記憶體額外負荷。
7.清除資源
如果您打算繼續進行後續的快速入門和教學課程,您可以讓這些資源留在原處。 當您不再需要資源時,請刪除資源群組來刪除它們。 使用下列命令來移除資源群組:
az group delete --name ${RESOURCE_GROUP}
8.後續步驟
如需詳細資訊,請參閱下列文章: