こんにちは、さるまりんです。
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に取り込んで実行してみたいと思います。
読んでくださってありがとうございました。
それではまた!