Maven を使用して Open Liberty Micro Web アプリを Azure App Service にデプロイする

このクイックスタートでは、Azure App Service Web Apps 用の Maven プラグインを使用して、Open Liberty アプリケーションを Azure App Service on Linux にデプロイします。 アプリの依存関係、ランタイム、構成を 1 つのデプロイ可能な成果物に統合する必要がある場合は、Tomcat および WAR ファイルでの Java SE デプロイを選択します。

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

重要

Azure App Service は Microsoft によって設計、運用、およびサポートされていますが、その上で実行するソフトウェアには、独自のサポート プランのサポートとライセンス条項が適用されます。 この記事で説明されているソフトウェアのサポートの詳細については、この記事に記載されているソフトウェアのメイン ページを参照してください。 Open Liberty のサポートについては、Open Liberty サポート ページを参照してください。 WebSphere Liberty のサポートについては、IBM Cloud Support を参照してください。

前提条件

Azure CLI へのサインイン

Maven プラグインで最もシンプルかつ容易に Open Liberty アプリケーションをデプロイするには、Azure CLI を使用します。

Azure CLI を使って、Azure アカウントにサインインします。

az login

指示に従って、サインインを完了します。

MicroProfile Starter からサンプル アプリを作成する

このセクションでは、Open Liberty アプリケーションを作成し、ローカルでテストします。

  1. Web ブラウザーを開き、MicroProfile Starter サイトに移動します。

    Open Liberty ランタイムが選択された MicroProfile Starter を示すスクリーンショット。

  2. 次の表の値を使用して、MicroProfile Starter に入力します。

    フィールド
    groupId com.microsoft.azure.samples.openliberty
    artifactId openliberty-hello-azure
    MicroProfile Version MP 4.0
    Java SE Version Java 11
    MicroProfile Runtime Open Liberty
    Examples for Specifications Metrics、OpenAPI
  3. [DOWNLOAD] を選択してプロジェクトをダウンロードします。

  4. アーカイブ ファイルを解凍します。次に例を示します。

    unzip openliberty-hello-azure.zip
    

アプリケーションをローカル環境で実行する

  1. 完成したプロジェクトにディレクトリを変更します。次に例を示します。

    cd openliberty-hello-azure/
    
  2. Maven を使用してプロジェクトをビルドします。次に例を示します。

    mvn clean package
    
  3. プロジェクトを実行します。次に例を示します。

    java -jar target/openliberty-hello-azure.jar
    
  4. Web アプリのテストは、Web ブラウザーを使用してアプリをローカルで参照して行います。 たとえば、curl を使うことができる場合は次のようなコマンドを実行できます。

    curl http://localhost:9080/data/hello
    
  5. 次のメッセージが表示されます。Hello World

Azure App Service 用の Maven プラグインを構成する

このセクションでは、Maven でアプリを Azure App Service on Linux にデプロイできるように、Open Liberty プロジェクトの pom.xml ファイルを構成します。

  1. デプロイを構成するには、次の Maven コマンドを実行します。

    mvn com.microsoft.azure:azure-webapp-maven-plugin:2.3.0:config
    

    プロンプトで次のオプションを選択します。

    入力フィールド 値の入力または選択
    Define value for OS(Default: Linux): 1. linux
    Define value for javaVersion(Default: Java 8): 2. Java 11
    Define value for runtimeStack(Default: TOMCAT 8.5): 2. TOMCAT 8.5
    確認 (Y/N)

Note

Tomcat を使用していない場合でも、今回は TOMCAT 8.5 を選択してください。 詳細な構成中に、値を TOMCAT 8.5 から Java に変更します。 この例では、特定のバージョンの Azure App Service Maven プラグインを使用します。 利用可能な最新バージョンの使用を検討する必要があります。 mvnrepository.com などのサイトにアクセスすると、最新バージョンの数を確認できます。

次の例のような出力が表示されます。

 [INFO] Scanning for projects...
 [INFO]
 [INFO] ---< com.microsoft.azure.samples.openliberty:openliberty-hello-azure >----
 [INFO] Building openliberty-hello-azure 1.0-SNAPSHOT
 [INFO] --------------------------------[ war ]---------------------------------
 [INFO]
 [INFO] --- azure-webapp-maven-plugin:2.3.0:config (default-cli) @ openliberty-hello-azure ---
 Auth type: AZURE_CLI
 Default subscription:
 Username:
 [INFO] Subscription:
 [INFO] It may take a few minutes to load all Java Web Apps, please be patient.
 Define value for OS [Linux]:
   1: Windows
 * 2: Linux
   3: Docker
 Enter your choice:
 Define value for javaVersion [Java 8]:
 * 1: Java 8
   2: Java 11
 Enter your choice: 2
 Define value for webContainer [Tomcat 8.5]:
   1: Jbosseap 7
 * 2: Tomcat 8.5
   3: Tomcat 9.0
 Enter your choice:
 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:
 Please confirm webapp properties
 Subscription Id : ********-****-****-****-************
 AppName : openliberty-hello-azure-1642075767899
 ResourceGroup : openliberty-hello-azure-1642075767899-rg
 Region : centralus
 PricingTier : P1v2
 OS : Linux
 Java : Java 11
 Web server stack: Tomcat 8.5
 Deploy to slot : false
 Confirm (Y/N) [Y]:
 [INFO] Saving configuration to pom.
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------
 [INFO] Total time:  21.981 s
 [INFO] Finished at: 2022-01-13T21:09:39+09:00
 [INFO] ------------------------------------------------------------------------
  1. Azure Web Apps でアプリケーションを実行するために、/src/main/liberty/config/ ディレクトリの下にある server.xml ファイルを変更します。 ファイルで、次の例に示すように、<httpEndpoint> タグに host="*" 行を追加します。

    <httpEndpoint id="defaultHttpEndpoint"
                  host="*"
                  httpPort="9080"
                  httpsPort="9443"/>
    
  2. pom.xml ファイル内の runtime エントリを TOMCAT 8.5 から java に変更し、 deployment*.war から *.jar に変更します。 次に、PORTWEBSITES_PORTWEBSITES_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.3.0</version>
      <configuration>
        <schemaVersion>v2</schemaVersion>
        <subscriptionId>********-****-****-****-************</subscriptionId>
        <resourceGroup>openliberty-hello-azure-1642075767899-rg</resourceGroup>
        <appName>openliberty-hello-azure-1642075767899</appName>
        <pricingTier>P1v2</pricingTier>
        <region>japaneast</region>
        <runtime>
          <os>Linux</os>
          <javaVersion>Java 11</javaVersion>
          <webContainer>java</webContainer>
        </runtime>
      <appSettings>
        <property>
          <name>PORT</name>
          <value>9080</value>
        </property>
          <property>
          <name>WEBSITES_PORT</name>
          <value>9080</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>
    

Azure にアプリケーションをデプロイする

この記事の前のセクションで説明した設定をすべて構成したら、次は Azure に Web アプリをデプロイします。 そのためには、次の手順を実行してください。

  1. pom.xml ファイルを変更する場合は、以前使っていたコマンド プロンプトまたはターミナル ウィンドウで、次の例のように Maven を使って JAR ファイルをリビルドします。

    mvn clean package
    
  2. Maven を使って次の例のように Azure に Web アプリをデプロイします。

    mvn azure-webapp:deploy
    

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

[INFO] Scanning for projects...
[INFO]
[INFO] ---< com.microsoft.azure.samples.openliberty:openliberty-hello-azure >----
[INFO] Building openliberty-hello-azure 1.0-SNAPSHOT
[INFO] --------------------------------[ war ]---------------------------------
[INFO]
[INFO] --- azure-webapp-maven-plugin:2.3.0:deploy (default-cli) @ openliberty-hello-azure ---
Auth type: AZURE_CLI
[INFO] Creating web app openliberty-hello-azure-1642075767899...
[INFO] Successfully created Web App openliberty-hello-azure-1642075767899.
[INFO] Trying to deploy external resources to openliberty-hello-azure-1642075767899...
[INFO] Successfully deployed the resources to openliberty-hello-azure-1642075767899
[INFO] Trying to deploy artifact to openliberty-hello-azure-1642075767899...
[INFO] Deploying (/Users/Downloads/openliberty-hello-azure/target/openliberty-hello-azure.jar)[jar]  ...
[INFO] Successfully deployed the artifact to https://openliberty-hello-azure-1642075767899.azurewebsites.net
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:11 min
[INFO] Finished at: 2022-01-13T21:29:50+09:00
[INFO] ------------------------------------------------------------------------

Maven により Azure に Web アプリがデプロイされます。 Web アプリまたは Web アプリ プランが存在しない場合は、Maven によって新たに作成されます。 出力に示されている URL に Web アプリが表示されるまで数分かかることがあります。 Web ブラウザーで URL にアクセスします。 次の画面が表示されます。

Open Liberty のフロント ページを示す Web ブラウザーのスクリーンショット。

アプリのデプロイが完了すると、Azure portal でそれを管理できるようになります。

次のスクリーンショットに示すように、Web アプリがリソース グループに一覧表示されます。

リソース グループの内容を示すAzure portalのスクリーンショット。

Web アプリにアクセスするには、Web アプリの [概要] ページにある [参照] を選択します。 デプロイが成功して実行中であることを確認します。 次の画面が表示されます。

Web アプリの概要ページを示すAzure portalのスクリーンショット。

実行中の App Service からのログ ストリームを確認する

実行中の App Service からログを表示 ("tail") できます。 サイト コードでの console.log への呼び出しはすべて、ターミナルに表示されます。

az webapp log tail \
    --resource-group openliberty-hello-azure-1642075767899-rg \
    --name openliberty-hello-azure-1642075767899

ログ ストリームを示すターミナル ウィンドウのスクリーンショット。

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

Azure リソースが不要になったら、リソース グループを削除して、デプロイしたリソースをクリーンアップします。

  • Azure portal で、左側のメニューから [リソース グループ] を選択します。
  • [名前でフィルター] フィールドに「microprofile」と入力します。このチュートリアルで作成したリソース グループにはこのプレフィックスが付いています。
  • このチュートリアルで作成したリソース グループを選択します。
  • トップ メニューから [リソース グループの削除] を選択します。

次のステップ

MicroProfile および Azure の詳細については、Azure ドキュメント センターで引き続き MicroProfile に関するドキュメントをご確認ください。

その他のリソース

この記事で説明しているさまざまなテクノロジの詳細については、次の記事をご覧ください。