HelidonのWebアプリケーションをAzure App Serviceで動かす
昨日書いた記事ではMicrosoft Learnの「Azure上のJavaの概要」を試して、Spring BootのWebアプリケーションをAzureにデプロイしました。
JavaのWebフレームワークは色々なものがあるので、他はどうなんだろう...?と気になったので、今日はMicroProfileの「Helidon」を試してみました。
基本的にはMicrosoftが後悔している以下のドキュメントどおりの手順ですが、一部変更しないとうまく動かなかったので、その辺りを含めてまとめます。
ローカル環境での実行
昨日書いた記事と同じ以下の環境を使いました。
使用したdockerfileは以下のとおりです。
FROM maven:3.8.1-openjdk-11
RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash
まずはMicroProfile Starterで以下のように選択してHelidonのプロジェクトをダウンロードします。
解凍したものをコンテナ環境で開いて以下のコマンドを実行します。
mvn clean package
あとは実行するだけです。
java -jar target/demo.jar
ブラウザでアクセスすると以下のような画面になります。
クリックするとHello Worldが表示されます。
ここまではドキュメントどおりです。
Azureでの実行
続いてAzureにデプロイするための準備です。最初にAzure CLIでログインしておきます。
az login
次にpom.xmlの セクションに以下を追加します。ドキュメントでは1.10.0となっていますが、試したらうまく動きませんでした。本記事の執筆時点の最新である1.13.0にしたところうまくいったので、以下を追加します。
<build>
<finalName>helidon-hello-azure</finalName>
<plugins>
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>1.13.0</version>
</plugin>
</plugins>
</build>
続いてazure-webappでAzureの構成を設定します。
mvn azure-webapp:config
対話式に構成を聞かれるので、linux、Java 11を選びました。このあとドキュメントではセクションを編集するのですが、そのまま適用するとうまくいきませんでした。
azure-webapp-maven-pluginを1.10.0ではなく1.13.0に上げたことで、Configurationで使えない定義があるようです。
そこで、<webContainer>タグで「java11」と指定してあるものを「Java SE」に変えました。
また、ドキュメントでは<include>タグで「/libs/*.jar」を追加しているのですが、これがあると
Multi executable jars found in <resources>, please check the configuration
というエラーになるのでカットしました。ということで最終的な定義は以下のとおりです。
<plugins>
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-webapp-maven-plugin</artifactId>
<version>1.13.0</version>
<configuration>
<schemaVersion>V2</schemaVersion>
<resourceGroup>demo-xxxxxxxxx-rg</resourceGroup>
<appName>demo-xxxxxxxxxxxx</appName>
<pricingTier>P1v2</pricingTier>
<region>westeurope</region>
<runtime>
<os>linux</os>
<javaVersion>java11</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>
</plugins>
あとは以下デプロイしたら終了です。
mvn clean package
mvn azure-webapp:deploy
デプロイされたWebアプリケーションにアクセスするとローカル環境と同じものが無事表示されました。
ドキュメントどおりに試してエラーが出たときに少し焦りますが、その分、うまく動いたときは嬉しいですね。他のフレームワークも試したいと思います。
Author And Source
この問題について(HelidonのWebアプリケーションをAzure App Serviceで動かす), 我々は、より多くの情報をここで見つけました https://qiita.com/kikutaro/items/cb92d6d5b2c8e22c8427著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .