こんにちは、さるまりんです 🐒🔧
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を自動生成したり、と拡張していきたいと思います。
ガレージ作業、続けていきますね。🐒🔧
読んでくださってありがとうございます。
それではまた!