Maven を使用して Quarkus Web アプリを Azure App Service にデプロイする
このクイックスタートでは、Azure App Service Web Apps 用の Maven プラグインを使用して、Quarkus アプリケーションを Azure App Service on Linux にデプロイします。 アプリの依存関係、ランタイム、構成を 1 つのデプロイ可能な成果物に統合する必要がある場合は、Tomcat および WAR ファイルでの Java SE デプロイを選択します。
Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
前提条件
- Azure CLI。ローカルで、または Azure Cloud Shell を介して使用。
- サポートされている Java Development Kit (JDK)。 Azure での開発時に使用可能な JDK の詳細については、「Java の Azure および Azure Stack に関するサポート」 を参照してください。
- Apache Maven バージョン 3。
Azure CLI へのサインイン
Maven プラグインで最もシンプルかつ容易に Quarkus アプリケーションをデプロイするには、Azure CLI を使用します。
Azure CLI を使って、Azure アカウントにサインインします。
az login
指示に従って、サインインを完了します。
MicroProfile Starter からサンプル アプリを作成する
このセクションでは、Quarkus アプリケーションを作成し、ローカルでテストします。
Java SE 8 基本プロジェクトを作成する
Web ブラウザーを開き、MicroProfile Starter サイトに移動します。
示されたフィールドに次の値を指定します。
フィールド 値 groupId com.microsoft.azure.samples.quarkus artifactId quarkus-hello-azure MicroProfile Version MP 3.2 Java SE Version Java 8 MicroProfile Runtime Quarkus Examples for Specifications Metrics、OpenAPI [DOWNLOAD] を選択してプロジェクトをダウンロードします。
アーカイブ ファイルを解凍します。次に例を示します。
unzip Quarkus-hello-azure.zip
Java SE 11 基本プロジェクトを作成する
Java 11 基本プロジェクトを作成するには、次のコマンドを使用します。
mvn io.quarkus:quarkus-maven-plugin:2.6.1.Final:create \
-DprojectGroupId=com.microsoft.azure.samples.quarkus \
-DprojectArtifactId=quarkus-hello-azure \
-DclassName="com.microsoft.azure.samples.quarkus.App" \
-Dpath="/hello"
アプリケーションをローカル環境で実行する
完成したプロジェクトにディレクトリを変更します。次に例を示します。
cd quarkus-hello-azure/
Maven を使用してプロジェクトをビルドおよび実行します。次に例を示します。
mvn quarkus:dev
Web アプリのテストは、Web ブラウザーを使用してアプリをローカルで参照して行います。 たとえば、curl を使うことができる場合は次のようなコマンドを実行できます。
Java SE 8 プロジェクトの場合:
curl http://localhost:8080/data/hello
Java SE 11 プロジェクトの場合:
curl localhost:8080/hello
"Hello World" または "hello" というメッセージが表示されます
Azure App Service 用の Maven プラグインを構成する
このセクションでは、Maven でアプリを Azure App Service on Linux にデプロイできるように、Quarkus プロジェクトの pom.xml ファイルを構成します。
コード エディターで pom.xml ファイルを開きます。
pom.xml ファイルの
<build>
セクションで、<plugins>
タグ内のmaven-surefire-plugin
の後に、次の<plugin>
エントリを追加します。<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.5.0</version> </plugin>
デプロイを構成するには、次の Maven コマンドを実行します。
mvn azure-webapp:config
プロンプトで次のオプションを選択します。
入力フィールド 値の入力/選択 サブスクリプションを選択します。 サブスクリプション ID を入力します。 Define value for OS(Default: Linux): 2. linux Define value for javaVersion(Default: Java 8): 2. Java 11 pricingTier の値を定義します (既定値: P1v2): 9. P1v2 確認 (Y/N) y 次の例のような出力が表示されます。
[INFO] Scanning for projects... [INFO] [INFO] ------< com.microsoft.azure.samples.quarkus:quarkus-hello-azure >------- [INFO] Building quarkus-hello-azure 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:2.5.0:config (default-cli) @ quarkus-hello-azure --- [INFO] Auth type: OAUTH2 Username: abc@xyz.com Available subscriptions: * 1: Subscription1(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx) 2: Subscription2(yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyy) Please choose a subscription [xxx]: 1 [INFO] Subscription: Subscription1(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx) Define value for OS [Linux]: 1: Windows * 2: Linux 3: Docker Enter your choice: 2 Define value for javaVersion [Java 8]: * 1: Java 8 2: Java 11 3: Java 17 Enter your choice: 2 Define value for pricingTier [P1v2]: 1: B1 2: B2 3: B3 4: D1 5: EP1 6: EP2 7: EP3 8: F1 * 9: P1v2 10: P1v3 11: P2v2 12: P2v3 13: P3v2 14: P3v3 15: S1 16: S2 17: S3 18: Y1 Enter your choice: 9 Please confirm webapp properties Subscription Id : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx AppName : quarkus-hello-azure-1601011883156 ResourceGroup : quarkus-hello-azure-1601011883156-rg Region : centralus PricingTier : P1v2 OS : Linux Java : Java 11 Web server stack: Java SE Deploy to slot : false Confirm (Y/N) [Y]: [INFO] Saving configuration to pom. [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 16.502 s [INFO] Finished at: 2020-09-25T14:31:34+09:00 [INFO] ------------------------------------------------------------------------
PORT
、WEBSITES_PORT
、WEBSITES_CONTAINER_START_TIME_LIMIT
の<configuration>
セクションに<appSettings>
セクションを追加します。azure-webapp-maven-plugin
の XML エントリは、次の例のようになります。<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.5.0</version> <configuration> <schemaVersion>V2</schemaVersion> <resourceGroup>microprofile</resourceGroup> <appName>quarkus-hello-azure-1591836715762</appName> <pricingTier>P1v2</pricingTier> <region>centralus</region> <runtime> <os>linux</os> <javaVersion>java 11</javaVersion> <webContainer>java SE</webContainer> </runtime> <appSettings> <property> <name>PORT</name> <value>8080</value> </property> <property> <name>WEBSITES_PORT</name> <value>8080</value> </property> <property> <name>WEBSITES_CONTAINER_START_TIME_LIMIT</name> <value>600</value> </property> </appSettings> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.jar</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
src/main/resources/application.properties ファイルに次のエントリを追加して、Uber (FAT) jar を作成します。
quarkus.package.type=uber-jar
Azure にアプリケーションをデプロイする
この記事の前のセクションで説明した設定をすべて構成したら、次は Azure に Web アプリをデプロイします。 そのためには、次の手順を行ってください。
pom.xml ファイルに変更を加えた場合は、次のコマンドを使用して JAR ファイルをリビルドします。
mvn clean package
次のコマンドを使用して Web アプリを Azure にデプロイします。
mvn azure-webapp:deploy
デプロイに成功すると、次の出力が表示されます。
[INFO] Successfully deployed the artifact to https://quarkus-hello-azure-1591836715762.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:20 min
[INFO] Finished at: 2020-06-11T10:06:51+09:00
[INFO] ------------------------------------------------------------------------
Maven によって、ご自身の Web アプリが Azure にデプロイされます。 Web アプリまたは Web アプリ プランが存在しない場合は、Maven によって新たに作成されます。 出力に示されている URL に Web アプリが表示されるまで数分かかることがあります。 Web ブラウザーで URL にアクセスします。 次の画面が表示されます。
Web アプリのデプロイが完了すると、Azure portal でそれを管理できるようになります。
Web アプリケーションは microprofile リソース グループに一覧表示されます。
Web アプリにアクセスするには、Web アプリの [概要] ページにある [参照] を選択します。 デプロイが成功して実行中であることを確認します。
実行中の App Service からのログ ストリームを確認する
実行中の App Service からログを表示 ("tail") できます。 サイト コードでの console.log
への呼び出しはすべて、ターミナルに表示されます。
az webapp log tail
--resource-group microprofile \
--name quarkus-hello-azure-1601011883156
リソースをクリーンアップする
Azure リソースが不要になったら、リソース グループを削除して、デプロイしたリソースをクリーンアップします。
- Azure portal で、左側のメニューから [リソース グループ] を選択します。
- [名前でフィルター] フィールドに「microprofile」と入力します。このチュートリアルで作成したリソース グループにはこのプレフィックスが付いています。
- このチュートリアルで作成したリソース グループを選択します。
- トップ メニューから [リソース グループの削除] を選択します。
次のステップ
MicroProfile および Azure の詳細については、Azure ドキュメント センターで引き続き MicroProfile に関するドキュメントをご確認ください。
その他のリソース
この記事で説明しているさまざまなテクノロジの詳細については、次の記事をご覧ください。