はじめに
Spring Boot(Kotlin) + GradleでAPIを書いてAzure Web Appにデプロイする。 を参考にしたSpring Boot(Kotlin)のアプリをAzure App Serviceする流れです。
Microsoft Azure PortalやSpring BootでUpdateで変更があるようなので、2020/10版として再構成します。
環境構築
- IntellJ IDEA CE
- Microsoft Azureアカウント(Microsoft Azureの無料アカウント)
- Microsoft Azure Portalが利用できるブラウザ(GoogleChrome等)
1. プロジェクトをつくる
Spring Initializer でGradle
、Kotlin
と、プラグインにWeb
を設定してダウンロードする。
2. プロジェクトを読み込む
IntelliJ IDEA CEでFile
→Open
で作成したプロジェクト開く。
APIサンプル実装
一通り実装するとsrc/main/kotlin
配下は以下のようになる
- com
- example
- BootApp.kt
- MyController.kt
- Main.kt
メインクラス(Main.kt)
以下を実装する。
package com.example.demo
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class Main
fun main(args: Array<String>) {
runApplication<BootApp>(*args)
}
BootApp.kt
以下を実装する。
package com.example.demo
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
@SpringBootApplication
class BootApp : SpringBootServletInitializer()
コントローラクラス(MyContoroller.kt)
この例だとlocalhost:8080
に行くと"Hello"が返ってくる。
package com.example.demo
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
@RestController
class MyController {
// URLに対応する処理を書いていく
@RequestMapping("/")
fun hello(): String {
return "Hello"
}
// http://localhost:8080?name=hoge
// みたいにGETパラメータをもらいたいときはこう
@RequestMapping("/paramTest")
fun paramTest(@RequestParam(value = "name") name: String): String {
return name
}
}
テストクラス削除
test/kotlin配下のktファイルを削除する。
※あっても後続作業には問題ないのですが、 gradle build タスク
実行対策です
ローカルサーバで動作確認
gradle bootRun
タスクを実行する。
./gradlew bootRun
実行後、ブラウザでhttp://localhost:8080
へアクセスする。
以下のような結果が表示されればOK。
Azureへデプロイ
war
を作成し、Azure App Serviceへのデプロイ手順。
1. warプラグインを入れ、warを有効にする
plugins {
// 他pluginは省略
id("war")
}
tasks.withType<War> {
enabled = true // 未設定時は実行可能Warファイルが作成される
}
2. warを生成する
gradle war
タスクを実行する。
./gradlew war
3. Azure App Serviceのアプリケーション設定でJava, Tomcatを設定する
- 名前: 適切なものを設定
- 公開: コード
- ランタイムスタック: 任意のJava JDK
- JavaWebサーバのスタック: 任意のTomcat
- オペレーティングシステム: Windows ※後続作業のためWindows必須選択
- 地域: 任意の地域
- AppServiceプラン: お試しなのでお安いものや無料のもの
4. warをAzure App ServiceのwwwRoot/webapps
にデプロイする
App Service Editorを選択する。
※ここでApp Service Editorが見つからない場合、 Azure App Serviceのアプリケーション設定
のオペレーティングシステム Windowsを選択しているか再度確認する。
App Service Editorを開いたら、エクスプローラからwar
をドラッグ&ドロップしデプロイする。
※ここでデプロイ階層が異なる場合、 Azure App Serviceのアプリケーション設定
のJavaWebサーバのスタック Tomcatを選択しているか再度確認する。
5. 動作確認
ブラウザでAzure App Serviceのweb appのURLを表示する。
時間かかる場合もあるのでページ読み込み終わるまで気長に待つ。
URLは以下のようになる。
https://[Azure App Serviceのアプリケーションの名前].azurewebsites.net/[warファイルの名前]/
6. Azure App Serviceの削除
確認が終わったらAzure App Serviceを削除する。
備忘
本記事のコードは以下GitHubのリポジトリを参照ください。
https://github.com/awakuwaku/spring-azure-deploy-sample