クイック スタート:Azure App Service で Java アプリを作成する

このクイックスタートでは、Maven Plugin for Azure App Service Web Apps を使用して、Java Web アプリを Azure App Service 内の Linux Tomcat サーバーにデプロイします。 App Service は、高度にスケーラブルで、パッチを自己適用する Web アプリ ホスティング サービスを提供します。 タブを使用して、Tomcat、JBoss、埋め込みサーバー (Java SE) の手順間の切り替えを行います。

Screenshot of Maven Hello World web app running in Azure App Service.

Maven が好みの開発ツールでない場合は、Java 開発者向けの同様のチュートリアルを確認してください。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

1 - Azure Cloud Shell を使用する

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Button to launch Azure Cloud Shell.
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードまたはコマンドを実行します。

2 - Java アプリを作成する

Cloud Shell プロンプトで次の Maven コマンドを実行して、helloworld という名前の新しいアプリを作成します。

mvn archetype:generate "-DgroupId=example.demo" "-DartifactId=helloworld" "-DarchetypeArtifactId=maven-archetype-webapp" "-DarchetypeVersion=1.4" "-Dversion=1.0-SNAPSHOT"

次に、作業ディレクトリをプロジェクト フォルダーに変更します。

cd helloworld

3 - Maven プラグインを構成する

Azure App Service へのデプロイ プロセスでは、Azure CLI から Azure 資格情報が自動的に使用されます。 Azure CLI がローカルにインストールされていない場合、Maven プラグインは OAuth またはデバイス ログインを使用して認証します。 詳細については、Maven プラグインによる認証に関するページを参照してください。

次に示す Maven コマンドを実行して、デプロイを構成します。 このコマンドは、App Service オペレーティング システム、Java バージョン、および Tomcat バージョンを設定するのに役立ちます。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
  1. [新しい実行構成の作成] では、「Y」と入力してから、Enter キーを押します。

  2. [OS の値を定義] では、Windows の場合は「1」、Linux の場合は「2」と入力してから、Enter キーを押します。

  3. [javaVersion の値を定義] では、Java 17 用に「3」と入力してから、Enter キーを押します。

  4. [webContainer の値を定義] では、Tomcat 10.0 用に「1」と入力してから、Enter キーを押します。

  5. [pricingTier の値を定義] では、P1v2 用に「9」と入力してから、Enter キーを押します。

  6. [確認] では、「Y」と入力してから、Enter キーを押します。

    Please confirm webapp properties
    AppName : helloworld-1690440759246
    ResourceGroup : helloworld-1690440759246-rg
    Region : centralus
    PricingTier : P1v2
    OS : Linux
    Java Version: Java 17
    Web server stack: Tomcat 10.0
    Deploy to slot : false
    Confirm (Y/N) [Y]: 
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  13.069 s
    [INFO] Finished at: 2023-07-27T06:52:48Z
    [INFO] ------------------------------------------------------------------------
    

自分の選択内容を確認した後、プラグインは、上記のプラグイン要素とお使いの Web アプリを Azure App Service で実行するように構成する必要な設定をお使いのプロジェクトの pom.xml ファイルに追加します。

pom.xml ファイルの関連部分は、次の例のようになります。

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>           

pom.xml 内で App Service の構成を直接変更できます。 一般的な構成をいくつか次の表に示します。

プロパティ Required 説明 Version
<schemaVersion> false 構成スキーマのバージョンを指定します。 サポートされる値は v1v2 です。 1.5.2
<subscriptionId> false サブスクリプション ID を指定します。 0.1.0 以降
<resourceGroup> true Web アプリの Azure リソース グループ。 0.1.0 以降
<appName> true Web アプリの名前。 0.1.0 以降
<region> false Web アプリがホストされるリージョンを指定します。既定値は centralus です。 すべての有効なリージョンについては、「サポートされているリージョン」を参照してください。 0.1.0 以降
<pricingTier> false Web アプリの価格レベル。 運用ワークロードの場合の既定値は P1v2 ですが、Java Dev/Test の場合は B2 が推奨される最小構成です。 詳細については、「App Service の価格」を参照してください 0.1.0 以降
<runtime> false ランタイム環境の構成。 詳細については、「構成の詳細」を参照してください。 0.1.0 以降
<deployment> false デプロイの構成。 詳細については、「構成の詳細」を参照してください。 0.1.0 以降

構成の完全な一覧については、プラグインのリファレンス ドキュメントを参照してください。 すべての Azure Maven プラグインでは、一連の構成が共通しています。 これらの構成については、「共通の構成」を参照してください。 App Service に固有の構成については、「Azure Web App: 構成の詳細」を参照してください。

<appName><resourceGroup> の値 (デモでは helloworld-1690440759246helloworld-1690440759246-rg となっています) に注意してください。 これらは後で使用します。

4 - アプリをデプロイする

pom.xml ファイル内のすべての構成が準備できたら、単一のコマンドで Java アプリを Azure にデプロイできます。

mvn package azure-webapp:deploy

デプロイが完了すると、アプリケーションは http://<appName>.azurewebsites.net/ (デモでは http://helloworld-1690440759246.azurewebsites.net) で準備が整います。 ローカル Web ブラウザーで URL を開くと、次のように表示されます

Screenshot of Maven Hello World web app running in Azure App Service.

おめでとうございます。 App Service に初めての Java アプリをデプロイできました。

5 - リソースをクリーンアップする

前の手順では、リソース グループ内に Azure リソースを作成しました。 今後これらのリソースが必要でない場合は、ポータルからリソース グループを削除するか、Cloud Shell で次のコマンドを実行します。

az group delete --name <your resource group name; for example: helloworld-1690440759246-rg> --yes

このコマンドの実行には、少し時間がかかる場合があります。

このクイックスタートでは、Maven Plugin for Azure App Service Web Apps を使って、Java Web アプリと埋め込みサーバーを Azure App Service にデプロイします。 App Service は、高度にスケーラブルで、パッチを自己適用する Web アプリ ホスティング サービスを提供します。 タブを使用して、Tomcat、JBoss、埋め込みサーバー (Java SE) の手順間の切り替えを行います。

このクイックスタートでは、azure-webapp-maven-plugin プラグインを使って、Spring Boot アプリ、埋め込み Tomcat、または Quarkus アプリをデプロイします。

Note

App Service は Spring アプリをホストできます。 すべての Spring サービスを必要とする Spring アプリの場合は、代わりに Azure Spring Apps を試してください。

Maven が好みの開発ツールでない場合は、Java 開発者向けの同様のチュートリアルを確認してください。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

1 - Azure Cloud Shell を使用する

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Button to launch Azure Cloud Shell.
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードまたはコマンドを実行します。

2 - サンプル アプリを入手する

  1. 既定の Spring Boot Web アプリケーション テンプレートをダウンロードして抽出します。 このリポジトリは、Spring CLI コマンド spring boot new my-webapp を実行すると自動的にクローンされます。

    git clone https://github.com/rd-1-2022/rest-service my-webapp
    
  2. 作業ディレクトリをプロジェクト フォルダーに変更します。

    cd my-webapp
    

3 - Maven プラグインを構成する

Azure App Service へのデプロイ プロセスでは、Azure CLI から Azure 資格情報が自動的に使用されます。 Azure CLI がローカルにインストールされていない場合、Maven プラグインは OAuth またはデバイス ログインを使用して認証します。 詳細については、Maven プラグインによる認証に関するページを参照してください。

次に示す Maven コマンドを実行して、デプロイを構成します。 このコマンドは、App Service オペレーティング システム、Java バージョン、および Tomcat バージョンを設定するのに役立ちます。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
  1. [新しい実行構成の作成] では、「Y」と入力してから、Enter キーを押します。

  2. [OS の値を定義] では、Linux 用に「2」と入力してから、Enter キーを押します。

  3. [javaVersion の値を定義] では、Java 17 用に「1」と入力してから、Enter キーを押します。

  4. [pricingTier の値を定義] では、P1v2 用に「9」と入力してから、Enter キーを押します。

  5. [確認] では、「Y」と入力してから、Enter キーを押します。

    Please confirm webapp properties
    AppName : <generated-app-name>
    ResourceGroup : <generated-app-name>-rg
    Region : centralus
    PricingTier : P1v2
    OS : Linux
    Java Version: Java 17
    Web server stack: Java SE
    Deploy to slot : false
    Confirm (Y/N) [Y]: y
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  8.139 s
    [INFO] Finished at: 2023-07-26T12:42:48Z
    [INFO] ------------------------------------------------------------------------
    

選択内容を確認した後、プラグインによって、Web アプリを Azure App Service で実行するように構成する、上記のプラグイン要素と必須の設定が、プロジェクトの pom.xml ファイルに追加されます。

pom.xml ファイルの関連部分は、次の例のようになります。

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>           

pom.xml 内で App Service の構成を直接変更できます。 一般的な構成をいくつか次の表に示します。

プロパティ Required 説明 Version
<schemaVersion> false 構成スキーマのバージョンを指定します。 サポートされる値は v1v2 です。 1.5.2
<subscriptionId> false サブスクリプション ID を指定します。 0.1.0 以降
<resourceGroup> true Web アプリの Azure リソース グループ。 0.1.0 以降
<appName> true Web アプリの名前。 0.1.0 以降
<region> false Web アプリがホストされるリージョンを指定します。既定値は centralus です。 すべての有効なリージョンについては、「サポートされているリージョン」を参照してください。 0.1.0 以降
<pricingTier> false Web アプリの価格レベル。 運用ワークロードの場合の既定値は P1v2 ですが、Java Dev/Test の場合は B2 が推奨される最小構成です。 詳細については、「App Service の価格」を参照してください 0.1.0 以降
<runtime> false ランタイム環境の構成。 詳細については、「構成の詳細」を参照してください。 0.1.0 以降
<deployment> false デプロイの構成。 詳細については、「構成の詳細」を参照してください。 0.1.0 以降

構成の完全な一覧については、プラグインのリファレンス ドキュメントを参照してください。 すべての Azure Maven プラグインでは、一連の構成が共通しています。 これらの構成については、「共通の構成」を参照してください。 App Service に固有の構成については、「Azure Web App: 構成の詳細」を参照してください。

<appName><resourceGroup> の値に注意してください。 これらは後で使用します。

4 - アプリをデプロイする

pom.xml ファイル内のすべての構成が準備できたら、単一のコマンドで Java アプリを Azure にデプロイできます。

  1. 次のコマンドを使って JAR ファイルをビルドします。

    mvn clean package
    
  2. 次のコマンドを使用することで Azure にデプロイします。

    mvn azure-webapp:deploy
    

    デプロイが成功すると、次の出力が表示されます。

    [INFO] Successfully deployed the artifact to https://<app-name>.azurewebsites.net
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  02:20 min
    [INFO] Finished at: 2023-07-26T12:47:50Z
    [INFO] ------------------------------------------------------------------------
    

デプロイが完了すると、アプリケーションは http://<appName>.azurewebsites.net/ で準備が整います。 ローカル Web ブラウザーで URL http://<appName>.azurewebsites.net/greeting を開くと (/greeting パスに注意してください)、次のように表示されます。

Screenshot of Spring Boot Hello World web app running in Azure App Service.

お疲れさまでした。 App Service に初めての Java アプリをデプロイしました。

5 - リソースをクリーンアップする

前の手順では、リソース グループ内に Azure リソースを作成しました。 今後これらのリソースが必要でない場合は、ポータルからリソース グループを削除するか、Cloud Shell で次のコマンドを実行します。

az group delete --name <your resource group name; for example: quarkus-hello-azure-1690375364238-rg> --yes

このコマンドの実行には 1 分かかることがあります。

このクイックスタートでは、Maven Plugin for Azure App Service Web Apps を使用して、Java Web アプリを Azure App Service 内の Linux JBoss EAP サーバーにデプロイします。 App Service は、高度にスケーラブルで、パッチを自己適用する Web アプリ ホスティング サービスを提供します。 タブを使用して、Tomcat、JBoss、埋め込みサーバー (Java SE) の手順間の切り替えを行います。

Screenshot of Maven Hello World web app running in Azure App Service.

Maven が好みの開発ツールでない場合は、Java 開発者向けの同様のチュートリアルを確認してください。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

1 - Azure Cloud Shell を使用する

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Button to launch Azure Cloud Shell.
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードまたはコマンドを実行します。

2 - Java アプリを作成する

Pet Store デモ アプリケーションを複製します。

git clone https://github.com/Azure-Samples/app-service-java-quickstart

ディレクトリを完成したペット ストア プロジェクトに変更し、これをビルドします。

ヒント

petstore-ee7 サンプルには Java 11 以降が必要です。 booty-duke-app-service サンプル プロジェクトには Java 17 が必要です。 インストールされている Java のバージョンが 17 未満の場合は、最上位ではなく、petstore-ee7 ディレクトリ内からビルドを実行します。

cd app-service-java-quickstart
git checkout 20230308
cd petstore-ee7
mvn clean install

HEAD がデタッチされた状態であることを示すメッセージが表示された場合、このメッセージは無視しても問題ありません。 このクイックスタートでは Git コミットを一切行わないので、デタッチされた HEAD 状態が適切です。

3 - Maven プラグインを構成する

Azure App Service へのデプロイ プロセスでは、Azure CLI から Azure 資格情報が自動的に使用されます。 Azure CLI がローカルにインストールされていない場合、Maven プラグインは OAuth またはデバイス ログインを使用して認証します。 詳細については、Maven プラグインによる認証に関するページを参照してください。

次に示す Maven コマンドを実行して、デプロイを構成します。 このコマンドは、App Service オペレーティング システム、Java バージョン、および Tomcat バージョンを設定するのに役立ちます。

mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:config
  1. [新しい実行構成の作成] では、「Y」と入力してから、Enter キーを押します。

  2. [OS の値を定義] では、Linux 用に「2」と入力してから、Enter キーを押します。

  3. [javaVersion の値を定義] では、Java 11 用に「2」と入力してから、Enter キーを押します。

  4. [webContainer] オプションでは、Jbosseap 7 用に「1」と入力してから、Enter キーを押します。

  5. [pricingTier の値を定義] では、P1v3 用に「1」と入力してから、Enter キーを押します。

  6. [確認] では、「Y」と入力してから、Enter キーを押します。

    Please confirm webapp properties
    AppName : petstoreee7-1690443003536
    ResourceGroup : petstoreee7-1690443003536-rg
    Region : centralus
    PricingTier : P1v3
    OS : Linux
    Java Version: Java 11
    Web server stack: Jbosseap 7
    Deploy to slot : false
    Confirm (Y/N) [Y]: 
    [INFO] Saving configuration to pom.
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  19.914 s
    [INFO] Finished at: 2023-07-27T07:30:20Z
    [INFO] ------------------------------------------------------------------------
    

自分の選択内容を確認した後、プラグインは、上記のプラグイン要素とお使いの Web アプリを Azure App Service で実行するように構成する必要な設定をお使いのプロジェクトの pom.xml ファイルに追加します。

pom.xml ファイルの関連部分は、次の例のようになります。

<build>
    <plugins>
        <plugin>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>>azure-webapp-maven-plugin</artifactId>
            <version>x.xx.x</version>
            <configuration>
                <schemaVersion>v2</schemaVersion>
                <resourceGroup>your-resourcegroup-name</resourceGroup>
                <appName>your-app-name</appName>
            ...
            </configuration>
        </plugin>
    </plugins>
</build>           

pom.xml 内で App Service の構成を直接変更できます。 一般的な構成をいくつか次の表に示します。

プロパティ Required 説明 Version
<schemaVersion> false 構成スキーマのバージョンを指定します。 サポートされる値は v1v2 です。 1.5.2
<subscriptionId> false サブスクリプション ID を指定します。 0.1.0 以降
<resourceGroup> true Web アプリの Azure リソース グループ。 0.1.0 以降
<appName> true Web アプリの名前。 0.1.0 以降
<region> false Web アプリがホストされるリージョンを指定します。既定値は centralus です。 すべての有効なリージョンについては、「サポートされているリージョン」を参照してください。 0.1.0 以降
<pricingTier> false Web アプリの価格レベル。 運用ワークロードの場合の既定値は P1v2 ですが、Java Dev/Test の場合は B2 が推奨される最小構成です。 詳細については、「App Service の価格」を参照してください 0.1.0 以降
<runtime> false ランタイム環境の構成。 詳細については、「構成の詳細」を参照してください。 0.1.0 以降
<deployment> false デプロイの構成。 詳細については、「構成の詳細」を参照してください。 0.1.0 以降

構成の完全な一覧については、プラグインのリファレンス ドキュメントを参照してください。 すべての Azure Maven プラグインでは、一連の構成が共通しています。 これらの構成については、「共通の構成」を参照してください。 App Service に固有の構成については、「Azure Web App: 構成の詳細」を参照してください。

<appName><resourceGroup> の値 (デモでは petstoreee7-1690443003536petstoreee7-1690443003536-rg となっています) に注意してください。 これらは後で使用します。

4 - アプリをデプロイする

pom.xml ファイル内のすべての構成が準備できたら、単一のコマンドで Java アプリを Azure にデプロイできます。

# Disable testing, as it requires Wildfly to be installed locally.
mvn package azure-webapp:deploy -DskipTests

デプロイが完了すると、アプリケーションは http://<appName>.azurewebsites.net/ (デモでは http://petstoreee7-1690443003536.azurewebsites.net) で準備が整います。 ローカル Web ブラウザーで URL を開くと、次のように表示されます

Screenshot of Maven Hello World web app running in Azure App Service.

おめでとうございます。 App Service に初めての Java アプリをデプロイできました。

5 - リソースをクリーンアップする

前の手順では、リソース グループ内に Azure リソースを作成しました。 今後これらのリソースが必要でない場合は、ポータルからリソース グループを削除するか、Cloud Shell で次のコマンドを実行します。

az group delete --name <your resource group name; for example: petstoreee7-1690443003536-rg> --yes

このコマンドの実行には、少し時間がかかる場合があります。

次のステップ