Spring Bootを使ってサーバーサイドKotlinの開発環境をDockerで構築する方法

こんにちは、さるまりんです。

Kotlinやってみようと思いまして、サーバーサイドの。クライアントもやるけど。

環境がいるなと思い、そのステップをメモとして残したいと思います。

1. Spring Bootのプロジェクトを作成

Spring Initializr(https://start.spring.io/)にアクセスしてプロジェクトを作成します。
設定はこんな感じ。

Project: Gradle – Kotlin
Language: Kotlin
Spring Boot: 最新の安定版 (今回は3.3.0を選択しています)
Packaging:Jar
Java: 17

GroupやArtifactはプロジェクトに応じて適切にかな。
今回は下のようになっています

Group: com.salumarine
Artifact: ktdemo
Name: Artifactと同じktdemo
Package: com.salumarine.ktdemo

上の設定の他に依存関係(Dependencies)にSpring Webを追加します。

画面はこんな感じになります。

プロジェクトを生成し、ダウンロードします。

zipファイルを解凍してできたktdemoディレクトリで、./gradlew bootRunで動くかどうかチェックしてみました。mac上で動作させるのに他のJavaが入っていたりしたので以下のコマンドで起動することを確認しました。

./gradlew bootRun -PjavaVersion=1.17 -Dorg.gradle.java.home="/usr/local/opt/openjdk@17/"

2. Kotlinのコードを作成

src/main/kotlin/com/salumarine/ktdemo/KtdemoApplication.ktに↓のコードを追加します。

package com.salumarine.ktdemo

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController

@SpringBootApplication
class KtdemoApplication

fun main(args: Array<String>) {
    runApplication<DemoApplication>(*args)
}

@RestController
class HelloController {
@GetMapping("/")
    fun hello(): String {
        return "Hello, this is Kotlin demo with Spring boot"
    }
}

3. Dockerfileの作成

今度はDockerの環境づくりです。↓のファイルを作成します。

Dockerfile

# buildするためのGradleのイメージを指定
FROM gradle:8.7.0-jdk17 as builder

# ローカルコードをコンテナイメージへコピー
COPY --chown=gradle:gradle . /home/gradle/project

# ワーキングディレクトリを設定
WORKDIR /home/gradle/project

# ビルド
RUN gradle build --no-daemon

# jdk(jre)のイメージを指定
FROM openjdk:17-jdk-slim

# Copy the jar to the production image from the builder stage.
# JARファイルを実行イメージへ移動
COPY --from=builder /home/gradle/project/build/libs/*.jar /app/app.jar

# コンテナスタートアップ時にウェブサービスをアップ
CMD ["java", "-jar", "/app/app.jar"]

4. Dockerイメージをビルド

↓のコマンドでイメージをビルドします。

docker build -t spring-boot-kotlin-demo .

5. Dockerコンテナを実行

↓のコマンドで実行です。

docker run -d -p 8080:8080 spring-boot-kotlin-demo

これでhttp://localhost:8080にアクセスして”Hello, this is Kotlin demo with Spring boot”のメッセージが表示されたOKです。

テキストエディタ等で直で実装してるので、今度はこれをeclipseなどIDEに取り込んで実行してみたいと思います。

読んでくださってありがとうございました。

それではまた!