Azure App Service に Web アプリをデプロイする
azure-webapp-maven-plugin
には、Java 開発者のための 2 つの目標があります。1 つ目は、Azure App Service プラグインの管理と構成をより簡単にすることで、2 つ目は、Maven プロジェクトの Azure App Service へのデプロイを簡略化することです。 前の演習では、簡単な "hello world" サンプルの Java Web アプリを作成し、ローカルでテストしました。 Azure App Service 用の Maven プラグインをプロジェクトに追加すると、Azure App Service にアプリをデプロイできます。
このユニットでは、会社が Azure App Service でアプリをホストするためのオプションを確認し、Maven プロジェクトに azure-webapp-maven-plugin
を追加して構成する方法について説明します。
Azure App Service の概要
Azure App Service を使用すると、会社の Web サイト、Web アプリ、REST API、およびその他のアプリケーション コードを Azure でホストできます。 プロジェクト コードはクラウドで実行されます。インフラストラクチャをプロビジョニングしたり、構成したりする必要はありません。 Azure App Service で Web アプリを実行すると、Azure で実行する場合の利点がすべて得られます。アプリはグローバルに利用でき、自動的にスケーリングされ、セキュリティとコンプライアンスが組み込まれており、使用するリソースに対してのみ課金されます。
Azure App Service では複数のプログラミング言語がサポートされます。これにより、開発者は、最も快適な言語を使用して、アプリケーションの作成を続けることができます。 .NET Core、Python、Node.js などの他の言語と共に、Java は一級市民です。作成する Web アプリは、Linux 上、Windows 上、または Docker コンテナー内でホストすることができます。 Web アプリを Azure にデプロイする前に、OS と価格レベルを指定する App Service プランを Azure で作成します。これにより、アプリに必要なプロビジョニング済みのコンピューティング リソースのサイズが決まります。
Maven ワークフロー
Maven には、プロジェクトをビルドするための default
、clean
、site
という 3 つの組み込みのライフサイクルがあり、default
ライフサイクルには次のフェーズが含まれます。
フェーズ | 説明 |
---|---|
compile |
コードをコンパイルします |
package |
コードを JAR または WAR にパッケージ化します |
install |
ローカル リポジトリにパッケージをインストールします |
deploy |
最終的なパッケージをリモート リポジトリにコピーします |
しかし、Azure App Service 用の Maven プラグインを使う場合、Maven の default
ライフサイクルに含まれるデプロイ フェーズは使用しません。 代わりに、mvn azure-webapp:deploy
コマンドを使用してアプリを Azure にデプロイします。
プロジェクトへの Azure App Service 用の Maven プラグインの追加
お使いの Web アプリに Azure App Service 用の Maven プラグインを追加するには、次のように、自分のプロジェクトの pom.xml
ファイルに azure-webapp-maven-plugin
用の XML を追加します。
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.13.0</version>
</plugin>
ただし、このプラグインには、構成をお使いの POM ファイルに追加する便利な対話的な方法があります。
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.13.0:config
プラグインでは、App Service プランの構成に必要な情報の入力が求められます。 自分の選択内容を確認した後、プラグインは、前述のプラグイン要素とお使いの Web アプリを Azure App Service で実行するように構成する必要な設定をお使いのプロジェクトの pom.xml
ファイルに追加します。
Note
最新バージョンの Maven プラグインについては、Azure App Service 用の Maven プラグインに関するドキュメント、または Maven の中央リポジトリを確認してください。
構成オプション
このユニットの前のセクションでは、Azure App Service 用の Maven プラグインを対話形式で使用して、Web アプリを構成する方法を示しました。 しかし、構成を対話形式で実行する必要はありません。 必要に応じて、プラグインの XML をプロジェクトの pom.xml
ファイルに手動で追加することができます。
pom.xml
ファイルからの次の注釈付きの抜粋は、必要な設定の一部を示しています。
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>2.13.0</version>
<configuration>
<schemaVersion>v2</schemaVersion>
<subscriptionId>aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e</subscriptionId>
<resourceGroup>learn-9c627899-58ae-4ef5-9630-3336ec7bce0c</resourceGroup>
<appName>MyWebApp-1610102860270</appName>
<pricingTier>S1</pricingTier>
<region>westus</region>
<runtime>
<os>Linux</os>
<javaVersion>Java 17</javaVersion>
<webContainer>Tomcat 10.0</webContainer>
</runtime>
<deployment>
<resources>
<resource>
<directory>${project.basedir}/target</directory>
<includes>
<include>*.war</include>
</includes>
</resource>
</resources>
</deployment>
</configuration>
</plugin>
次の表に、関連する構成オプションの一部を示します。 オプションの完全なリストについては、Azure App Service 用の Maven プラグインに関するドキュメントを参照してください。
タグ | [オプション] |
---|---|
<javaVersion> |
Linux では、バージョン 8、11、17 がサポートされます Windows では、バージョン 8、11、17 がサポートされます |
<webContainer> |
Linux では、Tomcat、JBoss EAP 7.2、Java SE がサポートされます Windows では、Tomcat と Java SE がサポートされます |
<resource> |
WAR または JAR がプロジェクトに配置される場所を指定します |
デプロイ オプション
App Service プランを既に作成している場合は、pom.xml
ファイルでそのプランの設定を指定できます。 Web アプリを Azure にデプロイすると、Maven ではこれらの設定を使用して、既存の App Service プランに新しいアプリがデプロイされます。
<!-- Deploy Web App to the existing App Service Plan -->
<appServicePlanResourceGroup>${PLAN_RESOURCEGROUP_NAME}</appServicePlanResourceGroup>
<appServicePlanName>${PLAN_NAME}</appServicePlanName>
プラグインのセットアップを対話形式で構成するときに、azure-webapp-maven-plugin
で App Service プランを自動的に作成できるようにする別のオプションもあります。 このオプションは、既存の App Service プランを pom.xml
ファイルに指定しない場合の、プラグインの既定の動作です。
App Service プランを作成する際に対話形式と手動のどちらを選択した場合でも、同じ Maven コマンドを使用して、アプリケーション コードを Azure にデプロイします。
mvn package azure-webapp:deploy
次の演習では、Azure App Service に Web アプリをデプロイします。