🌏
Spring BootをAzure App Serviceにデプロイする(Github Actions)
javaアプリをAzure App Service(Web Apps)で稼働させることになりました。ポイントは以下のとおりです。
- 検証目的なので、なるべく楽をする
- 何度もデプロイするので、Github Actionsを利用してデプロイを自動化する
Spring Bootアプリの作成
Spring Initializerという、Web上でサンプルアプリを作成してダウンロードできるサービスがあるので利用します。便利ですね。
- 以下の通りに設定します。
- Project:
Maven
- Language:
Java
- Spring Boot:
2.7.6
- Packaging:
Jar
- Java:
17
- Project:
-
ADD DEPENDENCIES
をクリック-
Spring Web
を追加
-
-
GENERATE
をクリック
ダウンロードできたら、DemoApplication.javaを開いてResponseを返すように変更します。
DemoApplication.java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/hello")
public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
return String.format("Hello %s!", name);
}
}
コードはGithubにpushしておきましょう。
Azure App Service(Web Apps)の作成
javaアプリを稼働させるためのApp Serviceを作成します。App Serviceはアプリケーションをホストするサービスの総称ですが、今回はJavaの動的アプリケーションなので、Web Appsを作成します。
- https://portal.azure.com/ にアクセス
- Web Appsを選択して、以下の通りに設定
- 公開:
コード
- ランタイムスタック:
Java17
- Java Webサーバーのスタック:
Java SE(Embedded Web Server)
- オペレーティングシステム:
Linux
- その他:
適当でOK
- 公開:
-
確認および作成
をクリック
CDを構築してデプロイを自動化する
ブランチが更新されるとWeb Appsに自動でデプロイするようにします。Web Apps側から設定をすると、自動でGithubリポジトリにworkflowファイルを作成してくれます。
- App Serviceのデプロイセンターを開く
- 以下の通りに設定
- ソース:
Github
- 次のユーザーとしてサインイン: 初回の場合はGithub連携します
- 組織: 先のコードをpushしたリポジトリがある組織
- リポジトリ: 先のコードをpushしたリポジトリ
- ブランチ: デプロイするブランチ
- ソース:
- 保存をクリック
- Githubを開いて、自動生成されたworkflowを編集
- run: mvn clean install + run: ./mvnw package
- 変更をコミット して、workflowを実行します
無事にデプロイが完了しました。
動作確認
ブラウザやVS CodeのREST Clientで以下のURLにアクセスしましょう。
https://{AppServiceのURL}/hello
Hello World
が返ってきたら成功です!
Discussion