長いことビルドはmaven派でしたがgradleを使う必要性が出てきたので備忘録として
Spring Bootをdockerを使ってgradle buildしていく
マルチステージビルドにしてCloud RunもしくはECSにデプロイする手順も後日公開予定
Spring Bootプロジェクトの作成
Spring Initializr https://start.spring.io/
を使ってSpring Bootプロジェクトの雛形を作成する
- Project
- Gradle Projectに変更
- Dependencies
- ADD DEPENDENCIES...からSpring Webを選択
GENERATEをクリックするとzipファイルのダウンロードが開始
解凍した中身がプロジェクトファイルになっている
プロジェクトを開く
テキストエディタでもIDEでも何でもいいのでプロジェクトを開く
今回は普段使わないIntelliJ IDEAの手順を記載
File → New → Project from Existing Source → 解凍したフォルダを選択 → Open
Import project from external modelをチェック → Gradleを選択 → Finish
コントローラー追加
初期状態ではコントローラーが無いためシンプルな文字列を返すコントローラーを追加していく
プロジェクト/src/main...の下にある~Application.javaと同じパッケージにHelloController.javaを作成する
package com.example.demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/")
public String index() {
return "Hello Spring Boot!";
}
}
IDEを使っている人はこの時点でSpring Bootアプリケーションを実行して動作確認ができる
アプリケーションを実行してlocalhost:8080にアクセス
Hello Spring Boot!
が表示されれば正常に動作できている
IntelliJ IDEAの場合は右端のGradleから実行できる
Dockerfile作成
プロジェクトの直下にDockerfileを作成する
ファイルをコピーしてビルドコマンドを実行するだけの簡単なイメージ
FROM gradle:6.7.1-jdk11
COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
CMD ["gradle", "build", "bootJar"]
gradle:6.7.1-jre11をベースイメージに使うとビルド中にヌルポで落ちる
jdkのイメージは大きいので本当であれば避けたい
Dockerビルド & 起動
コンソールでプロジェクトのディレクトリに移動して以下のコマンドを実行
docker build -t bootbuilder:v0.1 .
docker run -it --rm -v "$PWD":/home/gradle/src bootbuilder:v0.1
~build/libs内にjarが作成されていればビルド完了
参考資料