Maven を使用して Spring Boot アプリケーションをデプロイする
Note
Basic、Standard、Enterprise プランは、2025 年 3 月中旬以降非推奨になり、廃止期間は 3 年間です。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の廃止のお知らせ」を参照してください。
Standard 従量課金と専用プランは、2024 年 9 月 30 日以降に非推奨になり、6 か月後に完全にシャットダウンされます。 Azure Container Apps に移行することをお勧めします。 詳細については、「Azure Spring Apps の Standard 従量課金および専用プランを Azure Container Apps に移行する」を参照してください。
この記事の適用対象: ✔️ Java ❌ C#
この記事の適用対象: ✔️ Basic または Standard ✔️ Enterprise
この記事では、Azure Spring Apps Maven プラグインを使用してアプリケーションを構成し、Azure Spring Apps にデプロイする方法について説明します。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- Azure Spring Apps インスタンスが既にプロビジョニングされていること。
- JDK 8 または JDK 11
- Apache Maven
- Azure CLI バージョン 2.45.0 以降と Azure Spring Apps 拡張機能。 この拡張機能をインストールするには、
az extension add --name spring
コマンドを使用します。
Spring プロジェクトを生成する
この記事で使用する Spring プロジェクトを作成するには、次の手順に従います。
Spring Initializr に移動し、Azure Spring Apps に対して推奨される依存関係があるサンプル プロジェクトを生成します。 このリンクでは、次の URL を使用して既定の設定が提供されます。
https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.5.7&packaging=jar&jvmVersion=1.8&groupId=com.example&artifactId=hellospring&name=hellospring&description=Demo%20project%20for%20Spring%20Boot&packageName=com.example.hellospring&dependencies=web,cloud-eureka,actuator,cloud-config-client
次の図は、このサンプル プロジェクトに対して推奨される Spring Initializr 設定を示しています。
この例では、Java バージョン 8 を使用しています。 Java バージョン 11 を使用したい場合は、 [Project Metadata](プロジェクトのメタデータ) にあるオプションを変更してください。
すべての依存関係が設定されたら、 [生成] を選択します。
パッケージをダウンロードしてアンパックし、Web アプリケーション用の Web コントローラーを作成します。 次の内容を含むファイル src/main/java/com/example/hellospring/HelloController.java を追加します。
package com.example.hellospring; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; @RestController public class HelloController { @RequestMapping("/") public String index() { return "Greetings from Azure Spring Apps!"; } }
Spring アプリケーションをローカルでビルドする
Maven を使用してプロジェクトをビルドするには、次のコマンドを実行します。
cd hellospring
mvn clean package -DskipTests -Denv=cloud
プロジェクトのコンパイルには、数分かかります。 完了すると、各サービスのそれぞれのフォルダーに個別の JAR ファイルが作成されます。
Azure Spring Apps のインスタンスをプロビジョニングする
次の手順では、Azure portal を使用して、Azure Spring Apps のインスタンスを作成します。
新しいタブで、Azure portal を開きます。
上部の検索ボックスから Azure Spring Apps を探します。
その結果から [Azure Spring Apps] を選択します。
[Azure Spring Apps] ページで [作成] を選択します。
Azure Spring Apps の [作成] ページで、フォームに入力します。 次のガイドラインを考慮してください。
- サブスクリプション:このリソースに対する課金用のサブスクリプションを選択します。
- [リソース グループ] :新しいリソース用に新しいリソース グループを作成することをお勧めします。 このリソース グループは、後の手順で <リソース グループ名> として使用します。
- [サービス詳細/名前]: <サービスインスタンス名> を指定します。 名前の長さは 4 文字から 32 文字で、小文字、数字、およびハイフンのみを使用できます。 サービス名の最初の文字は英字でなければならず、最後の文字は英字または数字でなければなりません。
- [場所] :自分のサービス インスタンスのリージョンを選択します。
[確認と作成] を選択します。
構成を生成し、Azure Spring Apps にデプロイする
構成を生成してアプリをデプロイするには、次の手順に従います。
POM ファイルが含まれる hellospring ルート フォルダーから、次のコマンドを実行します。 Azure CLI を使用して既にサインインしている場合、コマンドによって資格情報が自動的に取得されます。 それ以外の場合、コマンドによってサインインの手順が求められます。 詳細については、GitHub の azure-maven-plugins リポジトリの認証に関する記事を参照してください。
mvn com.microsoft.azure:azure-spring-apps-maven-plugin:1.10.0:config
以下を選択するように要求されます。
- サブスクリプション ID - Azure Spring Apps インスタンスの作成に使用したサブスクリプション。
- サービス インスタンス - Azure Spring Apps インスタンスの名前。
- アプリ名 - 任意のアプリ名。または既定値を使用してください
artifactId
。 - パブリック エンドポイント - アプリを公開してパブリック アクセスできるようにする場合は true、それ以外の場合は false。
POM ファイル内の
appName
要素の値が正しいことを確認します。 POM ファイルの関連部分は、次の例のようになります。<build> <plugins> <plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-spring-apps-maven-plugin</artifactId> <version>1.10.0</version> <configuration> <subscriptionId>xxxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx</subscriptionId> <clusterName>v-spr-cld</clusterName> <appName>hellospring</appName>
POM ファイルに、プラグインの依存関係と構成が含まれています。
次のコマンドを使用して、アプリをデプロイします。
mvn azure-spring-apps:deploy
サービスを確認する
デプロイが完了したら、https://<service instance name>-hellospring.azuremicroservices.io/
でアプリにアクセスできます。
リソースをクリーンアップする
サンプル アプリケーションを引き続き使用する場合は、リソースをそのまま残しておいてかまいません。 不要になったら、Azure Spring Apps インスタンスを含むリソース グループを削除してください。 Azure CLI を使用してリソース グループを削除するには、次のコマンドを使用します。
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."