make init && make up で即実験!Spring Boot devboxテンプレを対話式にしてみた

こんにちは、さるまりんです 🐒🔧

Spring Boot を試したいとき、こんなことを思ったことはありませんか?

  • Java や Gradle のバージョンを気にしたくない
  • DB も含めて「とりあえず動く環境」が欲しい
  • 失敗しても、すぐ全部捨てられる実験場が欲しい

という、僕自身がずっと抱えていた問題を解決するために、
コピーして使える Spring Boot 用の devbox テンプレートを前回作りました。

今回はそれの発展系として、

make init && make up で即実験できる
Spring Boot 用 devbox(開発用の実験環境)

を、対話式ジェネレータとして作ってみました。

この devbox でできること

まず最初に、できることをまとめます。

前回と同様、この devbox を使うと:

  • Java / Kotlin どちらでも Spring Boot を起動できる
  • ローカルに Java や Gradle を入れなくてOK
  • PostgreSQL 付き or なしを選べる
  • Docker に全部閉じ込めた「壊してOK」な環境が作れる
  • 起動確認まで含めて 同じ手順で毎回再現できる

つまりこれは、

Spring Boot を安心して雑に試せるローカル実験場

です。

対話式 devbox ジェネレータ

今回の主役です。
このスクリプトで環境を作ります。

./devbox

実行すると、対話形式で聞かれます。

  • プロジェクト名
  • 言語(Java / Kotlin)
  • DB(PostgreSQL / none)
  • 公開ポート

実行例:

🐒🔧 さるまりん devbox ジェネレータ(Spring Boot編)

プロジェクト名(例: salumarine-devbox): salumarine-devbox
言語を選んでね
1) java
2) kotlin
番号を入力してね (1-2): 1
DBを選んでね
1) postgres
2) none
番号を入力してね (1-2): 1
アプリ公開ポート [8080]: 8080

最後に設定まとめが出て、devbox が生成されます。


今回作った devbox ジェネレータはこちらに置いています。
(そのまま clone / curl して使えます)

👉 https://github.com/salumarine/spring-boot-devbox-generator

生成される構成

生成されるディレクトリはこんな感じです。

salumarine-devbox/
├─ compose.yaml
├─ Makefile
├─ docker/
│ ├─ Dockerfile
│ └─ entrypoint.sh
├─ scripts/
│ └─ init.sh
└─ README.md

それぞれの役割はシンプルです。

  • compose.yaml
    → Spring Boot + DB の実行基盤
  • scripts/init.sh
    → Spring Initializr を叩いて app/ を生成
  • Makefile
    → 人間向けの入口(覚えるコマンドを減らす)
  • README.md
    → この devbox の使い方メモ

起動してみる

生成後は、README にも書いてあるこの手順だけです。

cd salumarine-devbox
make init
make up
make logs

初回は Gradle のダウンロードが走るので、少し時間がかかります。

起動確認(ここがちょっと大事)

アプリが起動したかは、make health で確認できます。

make health

最初はこんな感じになることがあります。

Waiting for app...
Still not ready. Check logs: make logs

これは 初回ビルド中でまだ起動していないだけ です。

make logs を見ると、Gradle → Spring Boot 起動ログが流れます。

起動後にもう一度 make health を叩くと:

{"groups":["liveness","readiness"],"status":"UP"}

UP が返ってきたら成功です 🎉

Kotlinでも使える?

はい、そのまま使えます。

ジェネレータで

2) kotlin

を選ぶだけで、以降の操作は 完全に同じ です。

シェル?Docker?どれの話?

シェルスクリプトを書いたので、この記事はShellカテゴリーに入れています。
が、これは「どれか」ではありません。

  • シェル → 接着剤
  • make → 人間の入口
  • Docker → 実行基盤
  • 主役 → Spring Boot(Java / Kotlin)

環境構築の面倒を全部 devbox に押し込めた、という話です。

まとめ

今回は、前回をさらに拡張し

make init && make up で、
Spring Boot を“すぐ試せる実験場”を作った

を実現してみました。

今後は、MySQLに対応したり、Java / KotlinのサンプルAPIを自動生成したり、と拡張していきたいと思います。

ガレージ作業、続けていきますね。🐒🔧

読んでくださってありがとうございます。
それではまた!