Docker上でSpring bootのビルド&実行するまで
はじめに
JavaというかSpringを触っている今日このごろ。
ついでにDockerで動かそうと思ったのでその設定をしていく。
前提
Dockerが使えること。 設定方法については割愛。
環境
Java(Spring boot)の設定
雛形ダウンロード
サクッと雛形をSpring Initializrで作成する。
指定したのは下記の通り。書いてないとこは何でも良いと思う。
項目 | 内容 |
---|---|
Project | Gradle project |
Language | Java |
Spring boot | 2.2.0(SNAPSHOT) |
packaging | jar |
Java version | 11 |
Dependencies | Lombok,Web |
ちょっとアプリ改修
このままでも動くけど動くだけなので軽く修正を加えることにする。
内容はただ単にレスポンスを返せるようにするだけ。
まず、自動生成されたクラスと同列にindexController.java
を作成する。
作成したファイルの内容は下記の通り。
$ touch src/main/java/...(package)/IndexContoroller.java
package hoge; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class IndexController { @GetMapping("index") @Override public String getIndexPage() { return "Hello World!"; } }
Dockerの設定
Dockerfileをちまちま書いていく。
調べた感じみんなローカルでビルドした後Dockerで動かしているのが多かったけど、
全部Dockerでやりたいので必要なファイルをコピってビルド & 実行。
Dockerfile
FROM openjdk:latest RUN mkdir /app WORKDIR /app COPY ./gradlew /app COPY ./build.gradle /app COPY ./settings.gradle /app COPY ./src /app/src COPY ./gradle /app/gradle ENTRYPOINT ["sh", "./gradlew", "bootRun"]
実行
準備が終わったので実行してみる。
ローカルから叩いてちゃんとレスポンスが取れればOK。
$ docker build -t spring-docker ./ # Springがport8080で起動するのでローカルからは3000にする $ docker run -p 3000:8080 spring-docker
問題なく起動したら適当にcurlで確認してみる。
下記のようになればOK。
$ curl localhost:3000/index Hello World!
まとめ
今回はDocker + Spring bootの設定をしてみた。
思ってたより楽だったし、久しぶりにJavaも触りたいのでもうちょっと何かを作ってみたいところ。
上でも書いたけど、意外とDocker上でビルドとかしないんだろうか。。。
それでは今回はこの辺で。