はじめに
JavaというかSpringを触っている今日このごろ。
ついでにDockerで動かそうと思ったのでその設定をしていく。
前提
Dockerが使えること。
設定方法については割愛。
環境
- OS: macOS Mojave
- Docker: Docker for Mac v2.0.0.3
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")
public String getIndexPage() {
return "Hello World!";
}
}
Dockerの設定
Dockerfileをちまちま書いていく。
調べた感じみんなローカルでビルドした後Dockerで動かしているのが多かったけど、
全部Dockerでやりたいので必要なファイルをコピってビルド & 実行。
ホントはこんなCOPY連打しないほうが良いんだろうけど、対処法がわからないので一旦こうする。
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上でビルドとかしないんだろうか。。。
それでは今回はこの辺で。