「開発スタック一発起動(Compose:DB/Redis/Queueなど)」教材アウトライン(全31章)🚀🐳
※Composeの最新推奨フォーマット(Compose Specificationベース)で進めます(compose.yaml中心、version:は前提にしない流れ)。(Docker Documentation)
0️⃣ まずは全体像:この教材で作る“完成品”🎯
ゴールの完成像(ずっと使う型)
- Node API(TypeScript) + Postgres + Redis + Queue Worker を
docker compose up一発で起動できる - ローカルPCは汚さず、開発手順は“短く・再現できる”
- 「止める/消す/データ残す/戻す」までできる
パート1:はじめてのComposeで「起動できた!」を最速で作る🏁✨
第1章:Composeって何が嬉しいの?🧠💡
- 「複数サービスをまとめて起動できる」意味を体感する
- “アプリ+DB+キャッシュ”が普通に必要になる理由
第2章:最小のcompose.yamlを読めるようになる📄👀
services:の考え方(“登場人物一覧”)- “YAML苦手”でも迷わない読み方
第3章:まずは起動の儀式を覚える(up / down / ps / logs)🧰🪄
- いつも使うコマンドだけに絞って練習
- 「起動できたか」を最短で確認するコツ
第4章:プロジェクト名と“同居”の考え方🏙️🧩
- 複数プロジェクトを並行しても衝突しない考え方
- ネットワーク/ボリュームに名前が付く仕組み
第5章:Windowsで詰まりがちなポイント先回り🪟🧯
- パス・改行・権限・ファイル監視の“あるある”
- 「重い/遅い/反映されない」を起こしにくくする準備
パート2:DB/Redisを“ちゃんと”組み込む🧱🗄️
第6章:Postgresをサービスとして追加する🐘➕
- DBコンテナの役割(アプリと分ける理由)
- 起動確認(接続できたら勝ち)
第7章:DBの永続化(volume)を理解する💾🔒
- 「downしてもデータが残る」を作る
- “消していいデータ / 消しちゃダメなデータ”の線引き
第8章:環境変数と.envで設定を分離する🔑📦
- 直書き地獄を避ける
- “どこに何を書くか”の最小ルール
第9章:ポート公開と「外から繋ぐ」感覚を掴む🌐🚪
localhost:xxxxの意味- DBやAPIに接続できる状態を作る
第10章:Redisを追加して“キャッシュ/キューの土台”を作る🟥⚡
- Redisは何に使う?(キャッシュ・セッション・キュー)
- Postgresと役割が違うことを体感
パート3:Node/TSアプリをComposeに載せる🧑💻🔥
第11章:APIサービスの“コンテナ化”を最小でやる📦🛠️
- まずは動けばOK(細かい最適化は後)
- “開発用”の起動コマンドを決める
第12章:ソース共有(bind mount)とnode_modules問題👟🧨
- ホスト共有して良いもの/ダメなもの
- “依存関係の置き場所”で詰まらない設計
第13章:サービス間通信(Composeネットワーク)を理解する🕸️📡
- “コンテナ同士はサービス名で繋ぐ”が基本
- DB接続文字列を組み立てられるようにする
第14章:起動順と待ち合わせ(healthcheck / depends_on)⏳🩺
- 「DBが起きる前にAPIが落ちる」を止める
- “待つ”を仕組みにして手順を消す
第15章:マイグレーション&初期データ投入を自動化する🌱🧱
- “手で叩く作業”をやめる
- 初回起動が楽になる設計
パート4:Queue/Workerで「開発スタック感」を完成させる🚚📬
第16章:キューって何?どこで効く?📨🤔
- “重い処理を後回し”の発想
- 例:メール送信、画像生成、集計、通知など
第17章:RedisベースのQueueを導入する(まずはここから)🟥📦
- 追加サービスは最小にする(学習しやすい)
- “APIが投げる / Workerが処理する”を作る
第18章:Workerサービスを分離して動かす👷♂️⚙️
- 1つのcomposeで「API」と「Worker」を同居
- ログで処理が流れるのを確認して達成感✨
第19章:失敗時のリトライ・DLQっぽい考え方🧯🔁
- “落ちても復旧できる”最小設計
- 開発で困る「無限リトライ」を避ける
第20章:オプションサービスを“必要なときだけ”起動する(profiles)🎛️🧩
- 例:DB管理UI、Redisの管理UIなど
- 普段は軽く、必要なときだけ増やせる設計
パート5:開発体験を“強く”する(ホットリロード/Watch/コマンド統一)⚡🧪
第21章:ホットリロードをCompose運用に組み込む🔥♻️
- “毎回ビルドしない”開発ループ
- 監視ツールとComposeの役割分担
第22章:Compose Watchで編集→自動反映を作る👀✨
watchで「保存したら勝手に追従」を体験する(Composeの開発支援機能)(Docker Documentation)- うまくいかない時のチェック観点
第23章:docker compose runで“一回だけ実行”を武器にする🗡️🧴
- migrate / seed / test / lint をコンテナ経由で統一
- 「手順の文章」を減らして事故率を下げる
第24章:ログ運用の基本(見る・絞る・追う)🧾🔎
logs -fの使いどころ- “どのサービスが原因?”を早く特定する癖
第25章:デバッグの型(exec / 状態確認 / ポート / 依存)🕵️♂️🧩
- 「動かない」を分解して潰す
- 初学者でも迷わない“チェック順”
パート6:データ運用・安全・速度まで(個人開発で事故りやすい所だけ)🛡️💨
第26章:データのバックアップ&リストアを最短で覚える📦🧯
- volumeのバックアップ発想
- Postgresのdump/restoreを“手順化”
第27章:セキュリティ最小セット(秘密・権限・マウント範囲)🔐🚧
.envの扱いミスを防ぐ- “イメージに秘密を焼かない”感覚
第28章:遅いを潰す(キャッシュ/依存/ビルド分離)🏎️💥
- 体感が変わる改善だけに絞る
- 「遅いから使わない」を防ぐ
パート7:AI込みの“実戦運用テンプレ”に仕上げる🤖📚
第29章:AIでCompose設計を速く・安全にする🧠⚙️
- AIに「叩き台」を出させて、人間がレビューする型
- よく効く指示:サービス分割、env整理、healthcheck案、profiles案
- “危ない提案(秘密直書き等)”を弾く観点
第30章:スターターキット化(テンプレ化)&次の一歩🚀🎁
- 新規PJでコピペして即起動できる形にまとめる
- 「本番は別物」の入口だけ触れる(開発→本番の差分設計)
- ここまでできたら、次カテゴリ(開発体験強化/速度/データ運用)へ自然に繋がる✨
第31章:おまけ:VS Codeのコンテナ開発(必要な人だけ)🧊🧰
- Dev Containersで「エディタごとコンテナ」にできる(チームや複数PJで便利)(code.visualstudio.com)
- ただし最初は「Composeでスタック一発起動」優先でOK🙆♂️