Skip to main content

「開発スタック一発起動(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🙆‍♂️