將 Java Spring Boot 應用程式部署至 Azure Container Apps
本文說明如何將具有登入的 Java Spring Boot 應用程式部署至 Azure Container Apps Microsoft Entra 帳戶。
本文假設您只使用 [ 在本機 執行] 索引標籤完成下列其中一篇文章,而您現在想要部署至 Azure。 這些指示與下列文章中的 [部署至 Azure] 索引標籤中的指示相同:
- 使用 Microsoft Entra 識別碼保護 Java Spring Boot 應用程式
- 使用 Azure Active Directory B2C 保護 Java Spring Boot 應用程式
- 啟用 Java Spring Boot 應用程式以登入使用者並存取 Microsoft Graph
- 使用角色和角色宣告保護 Java Spring Boot 應用程式
- 使用群組和群組宣告保護 Java Spring Boot 應用程式
必要條件
- Azure 帳戶。 如果您沒有訂用帳戶,請建立免費帳戶。 您需要 Azure 訂用帳戶的「參與者」或「擁有者」權限才能繼續。 如需詳細資訊,請參閱使用 Azure 入口網站指派 Azure 角色。
- Azure CLI。
- Azure Container Apps CLI 擴充功能、版本或更新版本
0.3.47
。 若要安裝最新版本,請使用az extension add --name containerapp --upgrade --allow-preview
命令。 - Java 開發工具組 17 版或更高版本。
- Maven.
準備 Spring 專案
使用下列步驟來準備專案:
使用下列 Maven 命令來建置專案:
mvn clean verify
使用下列命令在本機執行範例專案:
mvn spring-boot:run
設定
若要從 CLI 登入 Azure,請執行下列命令並遵循提示來完成驗證流程。
az login
若要確定您執行的是最新版本 CLI,請執行升級命令。
az upgrade
接下來,安裝或更新 CLI 的 Azure 容器應用程式延伸模組。
如果您在 Azure CLI 中執行 az containerapp
命令時收到遺漏參數的錯誤,請確定您已安裝最新版的 Azure Container Apps 擴充功能。
az extension add --name containerapp --upgrade
注意
從 2024 年 5 月開始,Azure CLI 延伸模組預設不會再啟用預覽功能。 若要存取容器應用程式預覽功能,請使用 --allow-preview true
安裝容器應用程式延伸模組。
az extension add --name containerapp --upgrade --allow-preview true
現在已安裝目前的延伸模組或模組,請註冊 Microsoft.App
和 Microsoft.OperationalInsights
命名空間。
注意
Azure 容器應用程式資源已從 Microsoft.Web
命名空間移轉至 Microsoft.App
命名空間。 如需詳細資訊,請參閱 2022 年 3 月將命名空間從 Microsoft.Web 移轉至 Microsoft.App。
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
建立 Azure Container Apps 環境
現在您的 Azure CLI 設定已完成,接下來您可以定義本文中使用的環境變數了。
在您的 Bash 殼層中定義下列變數。
export RESOURCE_GROUP="ms-identity-containerapps"
export LOCATION="canadacentral"
export ENVIRONMENT="env-ms-identity-containerapps"
export API_NAME="ms-identity-api"
export JAR_FILE_PATH_AND_NAME="./target/ms-identity-spring-boot-webapp-0.0.1-SNAPSHOT.jar"
建立資源群組。
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION \
使用自動產生的Log Analytics工作區建立環境。
az containerapp env create \
--name $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--location $LOCATION
顯示容器應用程式環境的預設網域。 記下此網域以供稍後章節使用。
az containerapp env show \
--name $ENVIRONMENT \
--resource-group $RESOURCE_GROUP \
--query properties.defaultDomain
準備應用程式以進行部署
當您將應用程式部署至 Azure Container Apps 時,您的重新導向 URL 會變更為 Azure Container Apps 中已部署應用程式實例的重新導向 URL。 使用下列步驟來變更application.yml檔案中的這些設定:
流覽至應用程式的 src\main\resources\application.yml 檔案,並將 的值
post-logout-redirect-uri
變更為已部署應用程式的功能變數名稱,如下列範例所示。 請務必以您的實際值取代<API_NAME>
和<default-domain-of-container-app-environment>
。 例如,使用上一個步驟中 Azure Container App 環境的預設網域,以及ms-identity-api
針對您的應用程式名稱,您將用於https://ms-identity-api.<default-domain>
post-logout-redirect-uri
值。post-logout-redirect-uri: https://<API_NAME>.<default-domain-of-container-app-environment>
儲存此檔案之後,請使用下列命令重建您的應用程式:
mvn clean package
重要
應用程式的 application.yml 檔案目前在 參數中 client-secret
保留客戶端密碼的值。 將此值保留在這個檔案中並不好的做法。 如果您將檔案認可至 Git 存放庫,您可能也會冒險。 如需建議的方法,請參閱 管理 Azure Container Apps 中的秘密。
更新您的 Microsoft Entra ID 應用程式註冊
由於重新導向 URI 會變更至 Azure Container Apps 上已部署的應用程式,因此您也需要變更 Microsoft Entra ID 應用程式註冊中的重新導向 URI。 請使用下列步驟來進行此變更:
流覽至 [適用於開發人員的 Microsoft 身分識別平台 應用程式註冊] 頁面。
使用搜尋方塊來搜尋您的應用程式註冊 ,例如
java-servlet-webapp-authentication
。選取應用程式名稱以開啟您的應用程式註冊。
從選單中選擇 驗證。
在 [Web - 重新導向 URI] 區段中,選取 [新增 URI]。
填寫應用程式的 URI,並附加
/login/oauth2/code/
-例如https://<containerapp-name>.<default domain of container app environment>/login/oauth2/code/
。選取儲存。
部署應用程式
將 JAR 套件部署至 AAzure 容器應用程式。
注意
如有必要,您可以在 Java 建置環境變數中指定 JDK 版本。 如需詳細資訊,請參閱 在 Azure Container Apps 中建置 Java 的環境變數。
現在您可以使用 az containerapp up
CLI 命令來部署 WAR 檔案。
az containerapp up \
--name $API_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--environment $ENVIRONMENT \
--artifact <JAR_FILE_PATH_AND_NAME> \
--ingress external \
--target-port 8080 \
--query properties.configuration.ingress.fqdn
注意
預設的 JDK 版本為 17。 如果您需要變更 JDK 版本以與您的應用程式相容,可以使用 --build-env-vars BP_JVM_VERSION=<YOUR_JDK_VERSION>
引數來調整版本號碼。
如需更多建置環境變數,請參閱 在 Azure Container Apps 中建置 Java 的環境變數。
驗證應用程式
在此範例中 containerapp up
,命令包含 --query properties.configuration.ingress.fqdn
自變數,其會傳回完整功能變數名稱 (FQDN),也稱為應用程式的 URL。 使用下列步驟來檢查應用程式的記錄,以調查任何部署問題:
從 [部署] 區段的 [輸出] 頁面存取輸出應用程式 URL。
從 [Azure Container Apps 實例 概觀 ] 頁面的瀏覽窗格中,選取 [ 記錄 ] 以檢查應用程式的記錄。
其他相關資訊
- Microsoft 身分識別平台 (適用於開發人員的Microsoft Entra 識別子)
- Microsoft驗證連結庫概觀 (MSAL)
- 快速入門:使用 Microsoft 身分識別平台來註冊應用程式
- 快速入門:設定用戶端應用程式以存取 Web API
- 瞭解Microsoft Entra ID 應用程式同意體驗
- 瞭解使用者和系統管理員同意
- Microsoft Entra 中的應用程式和服務主體物件 (機器翻譯)
- 國家雲端
- MSAL 程式代碼範例
- Microsoft適用於 Java 的 Entra ID Spring Boot Starter 用戶端連結庫
- Microsoft Java 驗證連結庫 (MSAL4J)
- MSAL4J Wiki
- 識別碼權杖
- Microsoft 身分識別平台內的存取權杖
下一步
如需詳細資訊和其他部署選項,請參閱下列文章: