LoginSignup
1

More than 3 years have passed since last update.

Spring Boot(Kotlin) + GradleでAPIを書いてAzure App Serviceにデプロイする。(2020/10版)

Last updated at Posted at 2020-11-01

はじめに

Spring Boot(Kotlin) + GradleでAPIを書いてAzure Web Appにデプロイする。 を参考にしたSpring Boot(Kotlin)のアプリをAzure App Serviceする流れです。
Microsoft Azure PortalやSpring BootでUpdateで変更があるようなので、2020/10版として再構成します。

環境構築

1. プロジェクトをつくる

Spring InitializerGradleKotlinと、プラグインにWebを設定してダウンロードする。

  • Spring Initializer設定例 Spring Initializer設定例

2. プロジェクトを読み込む

IntelliJ IDEA CEでFileOpenで作成したプロジェクト開く。

APIサンプル実装

一通り実装するとsrc/main/kotlin配下は以下のようになる

- com
  - example
    - BootApp.kt
    - MyController.kt
    - Main.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

以下を実装する。

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"が返ってくる。

MyController.kt
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を有効にする

build.gradle.kts
plugins {
  // 他pluginは省略
  id("war")
}
tasks.withType<War> {
  enabled = true  // 未設定時は実行可能Warファイルが作成される
}

2. warを生成する

gradle warタスクを実行する。

./gradlew war

build/libsの中にwarが生成される。
war生成結果

3. Azure App Serviceのアプリケーション設定でJava, Tomcatを設定する

  • 名前: 適切なものを設定
  • 公開: コード
  • ランタイムスタック: 任意のJava JDK
  • JavaWebサーバのスタック: 任意のTomcat
  • オペレーティングシステム: Windows ※後続作業のためWindows必須選択
  • 地域: 任意の地域
  • AppServiceプラン: お試しなのでお安いものや無料のもの

Azure App Service

4. warをAzure App ServiceのwwwRoot/webappsにデプロイする

App Service Editorを選択する。

※ここでApp Service Editorが見つからない場合、 Azure App Serviceのアプリケーション設定 のオペレーティングシステム Windowsを選択しているか再度確認する。

App Service Editor

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

参考

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