Azure

Azure App Service上でSpring Bootを利用したJavaアプリケーションを作成してみた

前回は、Azure Potal上でApp Serviceを作成してみたが、今回は、前回作成したApp ServiceにSpring Bootを利用したJavaアプリケーションを配置してみたので、その手順を共有する。

前提条件

下記記事に従ってAzure上でApp Serviceを作成済であること。

Azure Potal上でApp Serviceを作成してみたAzureとは、Microsoft社が提供するクラウドサービスで、サーバーやネットワーク・ストレージなどのITインフラや、いろいろなアプ...

また、下記記事に従って、STSをダウンロード済であること。

STSインストール_1
STS(Spring Tool Suite)をWindows端末上にダウンロードしてみたSpring BootアプリケーションをEclipse上で開発するには、Spring用のプラグインを同梱した「STS(Spring To...

さらに、下記サイトの内容に従って、Apache Mavenをダウンロード済であること。
https://qiita.com/Junichi_M_/items/20daee936cd0c03c3115

また、下記サイトの内容に従って、Azure CLIをインストール済であること。
https://docs.microsoft.com/ja-jp/cli/azure/install-azure-cli-windows?tabs=azure-cli

やってみたこと

  1. Spring Bootを利用したJavaアプリケーションの作成
  2. App Serviceへのデプロイするための定義ファイルの構成
  3. App ServiceへのSpring Bootを利用したJavaアプリケーションのデプロイ

Spring Bootを利用したJavaアプリケーションの作成

App Serviceへのデプロイする場合も、まずは通常のSpring Boot StarterによるJavaアプリケーションを作成する。その手順は以下の通り。

1) STSを起動し、ファイルメニューの「新規」から「Spring スターター・プロジェクト」を選択する。
SpringBootプロジェクトの作成_1

2) 型で「Maven」、パッケージングで「War」、Javaバージョンで「8」、言語で「Java」を選択し、それ以外の項目を下記のように入力し、「次へ」ボタンを押下する。
SpringBootプロジェクトの作成_2

3) 「Spring Web」「Thymeleaf」をライブラリに追加し、「次へ」ボタンを押下する。
SpringBootプロジェクトの作成_3

4) そのまま、「完了」ボタンを押下する。
SpringBootプロジェクトの作成_4

5) しばらく待つとSpring Bootアプリケーションの作成が完了し、以下のようなプログラム構成になる。
SpringBootプロジェクトの作成_5_1

作成後の「pom.xml」の内容は以下の通り。

また、作成後の「DemoAzureAppApplication.java」の内容は以下の通り。

さらに、作成後の「ServletInitializer.java」の内容は以下の通り。

その後、画面表示ができるよう、プログラムの追加・変更行う。追加・変更後のプログラム構成は以下の通りで、赤枠のソースが追加・変更したプログラムとなる。
SpringBootプロジェクトの作成_5_2

6) ローカル環境ではポート番号を変更して起動するため、application.propertiesに「server.port = (ポート番号)」を追加する。
SpringBootプロジェクトの作成_6

7) 以下のコントローラクラスを追加し、メッセージ「Hello App Service!!」を設定し、初期表示画面を表示できるようにする。

8) さらに以下の初期表示画面を追加する。

9) 「DemoAzureAppApplication.java」クラスにメインクラスが含まれているので、これを選択し右クリックし「実行」メニューから「Spring Bootアプリケーション」を選択する。
SpringBootプロジェクトの作成_9_1

起動すると、下記コンソールログが出力されることが確認できる。
SpringBootプロジェクトの作成_9_2

10) 「http:// (ホスト名):(ポート番号)」とアクセスすると、以下の初期表示画面が表示されることが確認できる。
SpringBootプロジェクトの作成_10

11) 画面表示の確認が終わったら、コンソールの「停止」ボタンを押下して、サーバーを停止させる。
SpringBootプロジェクトの作成_11

App Serviceへのデプロイするための定義ファイルの構成

App Serviceへのデプロイするためには、Mavenの定義ファイル「pom.xml」にApp Serviceデプロイ用定義を追加する必要がある。その手順は以下の通り。

1) コマンドプロンプトを起動し、pom.xmlの存在するディレクトリに移動する。
デプロイ用定義ファイル作成_1

2) 「az login」コマンドを実行し、Azure Portalにログインするアカウントでログインする。
デプロイ用定義ファイル作成_2_1

下記ログイン画面が表示されるため、ログインアカウントを選択する。
デプロイ用定義ファイル作成_2_2

ログインに成功すると以下の画面に遷移する。
デプロイ用定義ファイル作成_2_3

また、コンソールには以下のログイン情報が表示される。
デプロイ用定義ファイル作成_2_4

3) App Serviceへのデプロイ定義を追加するため、「mvn com.microsoft.azure:azure-webapp-maven-plugin:1.12.0:config」というコマンドを実行する。その際、前回の記事で作成したApp Serviceを指定するようにする。
デプロイ用定義ファイル作成_3

4) 先ほどのコマンド実行後の「pom.xml」の内容は以下の通りで、「azure-webapp-maven-plugin」の定義が追加されている。

App ServiceへのSpring Bootを利用したJavaアプリケーションのデプロイ

App Serviceへのデプロイは、Mavenコマンドで実行できる。その手順は以下の通り。

1) Azure Portalにログインし、デプロイ予定のApp Serviceを起動する。
AppServiceへのデプロイ_1

2) コマンドプロンプトを起動し、pom.xmlの存在するディレクトリに移動する。
AppServiceへのデプロイ_2

3) 「mvn clean」コマンドを実行し、デプロイされたwarファイルが含まれるtarget ディレクトリ内をクリアする。
AppServiceへのデプロイ_3

4) 「mvn package」コマンドを実行し、デプロイ用のwarファイルを作成する。
AppServiceへのデプロイ_4_1

AppServiceへのデプロイ_4_2

「mvn package」コマンドの実行が完了すると、以下のように「demoAzureApp-0.0.1-SNAPSHOT.war」が作成されていることが確認できる。
AppServiceへのデプロイ_4_3

5) 「mvn azure-webapp:deploy」コマンドを実行し、warファイルをApp Serviceにデプロイする。
AppServiceへのデプロイ_5

6) デプロイが完了したら、画面から確認する。デプロイ対象のApp Service概要の、URLの右「クリップボードにコピー」を押下し、URLをコピーした後で、コピーしたURLにアクセスすると、以下のように、デプロイしたアプリケーションの初期表示画面が表示される。
AppServiceへのデプロイ_6_1

AppServiceへのデプロイ_6_2

要点まとめ

  • Azure App Service上でSpring Bootを利用したJavaアプリケーションを配置するには、通常のSpring Boot StarterによるJavaアプリケーションを作成し、Azure App Serviceへデプロイするための定義ファイルを作成後、デプロイを行う。
  • Azure App Serviceにデプロイするための定義を作成するには、「az login」コマンドでログイン後、「mvn com.microsoft.azure:azure-webapp-maven-plugin:1.12.0:config」というコマンドを実行する。
  • Azure App Serviceにデプロイするためのwarファイルを作成するには、「mvn clean」コマンドを実行後、「mvn package」コマンドを実行する。
  • Azure App Serviceに作成したwarファイルをデプロイするには、「mvn azure-webapp:deploy」コマンドを実行する。