LoginSignup
2
3

More than 3 years have passed since last update.

Azure Web AppsでSpringBootアプリケーションを動かす最小構成

Posted at

やりたいこと

ちょっとお試しでAzure Web AppsにSpringBoot製のWebアプリをデプロイしたいと思ったのですが、公式チュートリアルを眺めていたら「まずMavenプラグインを構成します」と言われて「そうじゃない」ってなったので、開発環境に依存しないJavaアプリの最小構成についてまとめてみたいと思います。

(参考)Spring Boot JAR ファイルの Web アプリを Linux 用の Azure App Service にデプロイする

2019年8月現在、アプリのデプロイ方法は大きく以下の3種類のようです。

  • リポジトリと連携しビルドパイプラインを組む
  • コンテナをコンテナレジストリから取ってきて起動する
  • FTPアップロード

以前はOneDrive経由でのデプロイなどもあったような感じですがほぼなくなっています。

deployment.png

FTPも基本的には推奨されていないようですので、事実上コンテナ起動かビルドパイプラインかの2択という趨勢です。

ビルドに関してはAzure Pipelinesを利用するかKuduでビルドするかのどちらかが基本という感じでしょうか。
ACRが使える環境であればコンテナ化してACR経由でWebAppsを作るのが恐らく最も簡単な構成方法です。
どちらも詳しい記事が色々ありますので詳細については省略します。

ただせっかくですので今回の検証に利用したDockerfileだけ参考に置いておきます。

FROM azul/zulu-openjdk-alpine
VOLUME /tmp
RUN mkdir /app
WORKDIR /app
ENV JAVA_OPTS="-Duser.timezone=Asia/Tokyo"
COPY build/libs/SampleApp.jar /app/SampleApp.jar
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app/SampleApp.jar --server.port=80" ]

alpineベースのOSにzuluがインストールされたイメージが公式から提供されていますので、jarをコピーしてENTRYPOINTを定義するだけ。
後はこれをACRに登録してWebApps側でPULLするように設定すれば終了です。
簡単ですね。

この記事の残りでは、無料範囲で最速で試したい時用にレガシーなFTPで構成する方法についてまとめます。

Web Appsリソースの作成

Javaアプリを構成します。

[公開]で[コード]を選択、
ランタイムスタックでJava SEを選択します。
オペレーティングシステムは現在のところLinuxのみのサポートのようです。

webapps-create.png

デプロイ

FTPユーザの作成

先程も貼り付けたポータル画面の[デプロイセンター]からFTPを選択し、[ダッシュボード]を押します。
そうすると、FTPサーバでの接続情報が表示されますので、各種情報をコピーしてFTP接続します。

ftp.png

ファイルアップロード

FTPで実行可能jarファイルをアップロードします。
ポータルに表示された接続情報をそのまま利用するとデフォルトでは /site/wwwroot/がカレントディレクトリになります。
アップロード先はそのままでOK。

deploy.png

起動構成

ポータルの
[構成]メニュー → [全般設定]
から設定します。

configure.png

  • スタック: (今回は)Java8
  • メジャーバージョン: Java SE
  • マイナーバージョン: Java SE
  • スタートアップコマンド: java -jar /home/site/wwwroot/SampleApp.jar --server.port=80

パスを /home/から始めてフルパスで指定しています。
FTPサーバのRootとは若干ズレているところがハマりポイント。

環境変数は
[構成]メニュー → [アプリケーション設定]
で設定しておくとそのまま渡してくれます。

この状態で[保存]を実行すると設定が保存され、WebAppsに反映されます。
起動するまでしばらく待ってアクセスすると動作が確認できます。

まとめ

終わってみると本当に大したことがない感じですが、「AzureWebAppsでSpringBootを動かす」というキーワードから入ると、パイプラインを組んでビルドをするのが標準だみたいな情報が意外と見つからなかったので、自分なりに整理するのに苦戦した気がします。
次はAzure Reposと連携したAzure Pipelinesによるビルドを試してみたいですね。

2
3
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
2
3