LoginSignup
1
0

More than 1 year has passed since last update.

QuarkusのWebアプリケーションをAzure App Serviceで動かす

Last updated at Posted at 2021-04-30

先日、JavaのWebフレームワーク「Helidon」をAzure App Serviceで動かしました。今日は「Quarkus」を試します。

ローカル環境での実行

Helidonのときと同じ環境を使いました。

使用したdockerfileは以下のとおりです。

FROM maven:3.8.1-openjdk-11

RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash

今回もMicroProfile Starterでプロジェクトの雛形を作りました。

スクリーンショット 2021-04-30 20.52.33.png

ビルドします。

mvn clean package

実行します。

java -jar target/demo.jar

以下の表示になりました。

スクリーンショット 2021-04-30 22.58.29.png

スクリーンショット 2021-04-30 22.58.44.png

Azureでの実行

続いてAzureにデプロイするための準備です。最初にAzure CLIでログインしておきます。

az login

次にpom.xmlのbuildセクションに以下を追加します。

<plugin>
    <groupId>com.microsoft.azure</groupId>
    <artifactId>azure-webapp-maven-plugin</artifactId>
    <version>1.13.0</version>
</plugin>

以下コマンドを実行します。

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

対話式に構成を聞かれるので、linux、Java 8を選びました。

最初このままデプロイしたところ、Quarkusがうまく起動せず以下のエラーがログに出ていました。

Caused by: java.lang.ClassNotFoundException: io.quarkus.runtime.Quarkus

調べたところ以下の情報がありました。

いまいちよくわかっていないのですが、Fat Jarになっていないっぽい?application.propertiesに以下を追加することで無事にAzure上でQuarkusが起動しました。

quarkus.package.uber-jar=true

あとは手でappSettingsを追加しています。これがないとQuarkusは起動しているけど発行されたURLにアクセスできませんでした。

<plugins> 
  <plugin> 
    <groupId>com.microsoft.azure</groupId>  
    <artifactId>azure-webapp-maven-plugin</artifactId>  
    <version>1.14.0</version>  
    <configuration> 
      <schemaVersion>v2</schemaVersion>  
      <subscriptionId>xxxxx</subscriptionId>  
      <resourceGroup>demo-xxxxxxxxxxx-rg</resourceGroup>  
      <appName>demo-xxxxxxxxxx</appName>  
      <pricingTier>P1v2</pricingTier>  
      <region>westeurope</region>  
      <runtime> 
        <os>Linux</os>  
        <javaVersion>Java 8</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>900</value> 
        </property> 
      </appSettings>  
      <deployment> 
        <resources> 
          <resource> 
            <directory>${project.basedir}/target</directory>  
            <includes> 
              <include>*.jar</include> 
            </includes> 
          </resource> 
        </resources> 
      </deployment> 
    </configuration> 
  </plugin> 
</plugins> 

無事にローカル環境と同じように表示されました。

スクリーンショット 2021-05-01 0.50.43.png

スクリーンショット 2021-05-01 0.50.54.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0