次の方法で共有


Java Spring Boot アプリを Azure Container Apps にデプロイする

この記事では、Microsoft Entra アカウントによるサインインを使用して Java Spring Boot アプリを Azure Container Apps にデプロイする方法について説明します。

この記事は、次のいずれかの記事を [ローカルで実行] タブを使用して完了し、現在 Azure へのデプロイを計画している読者を想定しています。 以降の手順は、次の記事に記載された「Azure へのデプロイ」タブの手順と同じです。

前提条件

  • Azure アカウント。 アカウントがない場合は、 無料アカウントを作成してください。 続行するには、Azure サブスクリプションの "共同作成者" または "所有者" のアクセス許可が必要です。 詳細については、Azure portal を使用して Azure ロールを割り当てる方法に関するページを参照してください。
  • Azure CLI
  • Azure Container Apps CLI 拡張機能バージョン 0.3.47 以上。 最新バージョンをインストールするには、az extension add --name containerapp --upgrade --allow-preview コマンドを使用します。
  • Java Development Kit バージョン 17 以上。
  • Maven

Spring プロジェクトを準備する

次の手順を実行して、プロジェクトを準備します。

  1. 次の Maven コマンドを使用して、プロジェクトをビルドします。

    mvn clean verify
    
  2. 次のコマンドを使用して、サンプル プロジェクトをローカルで実行します。

    mvn spring-boot:run
    

セットアップ

CLI から Azure にサインインするには、次のコマンドを実行し、プロンプトに従って認証プロセスを完了します。

az login

最新バージョンの CLI を実行していることを確認するには、upgrade コマンドを実行します。

az upgrade

次に、CLI 用の Azure Container Apps 拡張機能をインストールまたは更新します。

Azure CLI で az containerapp コマンドを実行するときにパラメーターが見つからないというエラーが表示された場合には、最新バージョンの Azure Container Apps 拡張機能がインストールされていることを確認してください。

az extension add --name containerapp --upgrade

Note

2024 年 5 月以降、Azure CLI 拡張機能では、既定でプレビュー機能が有効になりません。 Container Apps のプレビュー機能にアクセスするには、--allow-preview true を使用して Container Apps 拡張機能をインストールします。

az extension add --name containerapp --upgrade --allow-preview true

最新の拡張機能またはモジュールがインストールされたので、Microsoft.App および Microsoft.OperationalInsights 名前空間を登録します。

Note

Azure Container Apps リソースは、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 \

自動生成されたログ分析ワークスペースを使用して環境を作成します。

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 ファイルでこれらの設定を変更するには、次の手順に従います。

  1. アプリの src\main\resources\application.yml ファイルに移動し、post-logout-redirect-uri の値をデプロイされたアプリのドメイン名に変更します (次の例を参照)。 <API_NAME><default-domain-of-container-app-environment> は実際の値に置き換えてください。 たとえば、前の手順の Azure Container Apps 環境の既定のドメインを使用し、アプリ名に ms-identity-api を使用する場合、post-logout-redirect-uri 値には https://ms-identity-api.<default-domain> を使用します。

    post-logout-redirect-uri: https://<API_NAME>.<default-domain-of-container-app-environment>
    
  2. このファイルを保存した後、次のコマンドを使用してアプリをリビルドします。

    mvn clean package
    

重要

アプリケーションの application.yml ファイルには、クライアント シークレットの値が client-secret パラメーターに格納されています。 この値をこのファイルに保持しないでください。 また、ファイルを Git リポジトリにコミットすると、リスクが生じる可能性があります。 推奨される方法については、「Azure Container Apps でシークレットを管理する」を参照してください。

Microsoft Entra IDアプリの登録を更新する

リダイレクト URI は Azure Container Apps にデプロイされたアプリに変更されるため、Microsoft Entra ID アプリの登録でも、リダイレクト URI を変更する必要があります。 次の手順に従って、この変更を行います。

  1. 開発者用の Microsoft ID プラットフォームの [アプリの登録] ページに移動します。

  2. 検索ボックスを使用してアプリの登録を検索します (例: java-servlet-webapp-authentication)。

  3. 名前を選択して、アプリの登録を開きます。

  4. コマンドメニューから 認証 を選択します。

  5. Web - リダイレクト URI セクションで、URI の追加を選択します。

  6. アプリの URI を、/login/oauth2/code/ を追加して入力します。たとえば https://<containerapp-name>.<default domain of container app environment>/login/oauth2/code/ のようになります。

  7. [保存] を選択します。

アプリケーションのデプロイ

JAR パッケージを Azure Container Apps にデプロイします。

Note

必要に応じて、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

Note

既定の 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 とも呼ばれます) を返します。 次の手順を使用して、アプリのログをチェックし、デプロイの問題があれば調査します。

  1. デプロイメント セクションの出力ページから出力アプリケーションの URL にアクセスします。

  2. Azure Container Apps インスタンスの[概要] ページのナビゲーション ウィンドウで、[ログ] を選択してアプリのログを確認します。

詳細

次のステップ

詳細およびその他のデプロイ オプションについては、次の記事を参照してください。