AetherEchoesEngineering
Vol.042025年6月24日
Engineering#00082 min1733 view

docker compose で DB を秒で建て直す習慣

開発中に DB 状態を破棄するのが「面倒」だと、無駄に温存しがちになる。10 秒で戻せる Makefile タスクの作り方。

SoSoraEndo2025年6月24日2 min173

「捨てやすい DB」が開発速度を決める

Ridgepole と seed-fu に切り替えた時、結果的に最も効いたのは「DB を 10 秒で消して戻せる」状態を作ったことでした。

Makefile

db_reset:
	docker compose exec backend bundle exec rails db:drop db:create
	docker compose exec backend bundle exec ridgepole -c config/database.yml -E development -f db/schemas/Schemafile --apply
	docker compose exec backend bundle exec rails db:seed_fu

make db_reset で DROP → CREATE → schema 適用 → seed まで一発。

tmpfs にすると体感が変わる

MySQL の data dir を tmpfs にすると、I/O が消えて 3〜4 秒で seed まで終わります。

services:
  db:
    image: mysql:8.4
    tmpfs:
      - /var/lib/mysql

まとめ

「壊れたら復元コストが高い」状態を作らない。捨てやすい DB は、心理的に試行回数を増やしてくれます。

Tags

Reaction

Share

X (Twitter)