【Kotlin】Kotlin + Spring Boot + MavenをDockerで動かしてみる
はじめに
こんにちは、がんがんです。
前回の備忘録にて、KotlinのHello WorldをDocker上にて行っていきました。
gangannikki.hatenadiary.jp
今回はSpring Bootを加えて、Kotlin + Spring Boot on Dockerの実験を行っていこうと思います。
また、ビルドツールにはMavenを使っていこうと思います。
参考
公式ドキュメント
Kotlin + Spring Boot + Dockerというドキュメントはなかったので、下記の2つのドキュメントを参考にしていきました。
spring.pleiades.io
参考記事
環境
- Kotlin
- Spring Boot
- Maven
Spring Bootのひな形は以下の通りです。今回はspring initializrからダウンロードしました。
ドキュメントを参考にする場合はDependenciesを適宜追加してください。
コンソールから取得する場合は下記の通りです。
$ curl https://start.spring.io/starter.zip -d language=kotlin -d style=web -d packageName=com.example.demo -d name=Demo -o demo.zip $ unzip demo.zip && rm demo.zip
Dockerfileの準備
最終的にはGCP上での実験を行いたいので今回もDockerの準備をしていきます。docker-compose.ymlを用意するほどでもないかと思ったので、今回はDockerfileのみです。
Dockerfile |
FROM openjdk:14-jdk-alpine RUN mkdir /work COPY ./demo /work WORKDIR /work RUN /work/mvnw package RUN mv /work/target/*.jar /work/app.jar ENTRYPOINT [ "java", "-jar", "/work/app.jar" ]
コントローラーの用意
せっかくなのでコントローラーも追加しておきます。コードの内容は参考記事とほとんど同じです。
/src/main/kotlin/com/example/demo/Controller.kt |
package com.example.demo import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RestController @RestController class Controller { @GetMapping(path = ["hello"]) fun hello(): String { return "Hello Kotlin, Hello Spring-Boot." } }
実行
コントローラーの準備が完了したら実行させていきます。
# コンソール1 $ docker build --no-cache -t springio/demo . $ docker run -p 8081:8080 springio/demo
サーバーが立ち上がったら別のコンソールを立ち上げてアクセスしてみます。ちゃんとreturnが返ってきますね。
# コンソール2 $ curl localhost:8081/hello Hello Kotlin, Hello Spring-Boot.
実験が完了したらきちんとdocker stop
コマンドを実行する必要があります。
prune処理しておくと良さげ
実行とはあまり関係ないですが、イメージやコンテナが残ってしまうのでpruneですべてを消去しておくことをオススメします。
$ docker container prune $ docker image prune