ローカル公開の整理(リバースプロキシ/複数アプリ共存):30章アウトライン📚✨
(Compose は “Compose Specification” 前提で進める想定だよ〜🧩)(Docker Documentation)
01. まずは困りごとを言語化しよう😵💫🔌
- 「localhost:3000 / 5173 / 8787 …」が増えて地獄になる理由
- ゴールは「URLが人間の脳にやさしい」こと🧠💕
02. 完成形のイメージ図を作る🗺️✨
- “入口は1個(80/443)+中にいくつもアプリ” の形
- 例:app1.localhost / app2.localhost / api.localhost 🎯
03. “公開の整理”の3大パターンを知る🧠🔀
- ポートで分ける(簡単だけど増える)
- パスで分ける(/app1 みたいに)
- サブドメインで分ける(app1.localhost みたいに)
04. ルーティング超入門:URLのどこで振り分ける?🔍🍰
- ホスト名(サブドメイン)で分ける
- パスで分ける
- “どっちを選ぶと幸せ?”の判断軸🌱
05. Windowsでローカルドメインを扱う基本🪟📝
- hostsファイルの役割(名前解決ってなに?)
- 手動編集の「やりがちミス」あるある😇(レンタルサーバー CORESERVER(コアサーバー))
06. .localhostの最強さを知る💪🏠
- .localhost は特殊用途として予約されてる(外DNSに出にくい)
- “ローカル用の名前”として扱いやすい理由✨(rfc-editor.org)
07. サブドメイン運用のコツ🌈📛
- app1.localhost / app2.localhost を使うと何が楽?
- CookieやCORSが絡むときの注意ポイントも先に軽く👀
08. “とりあえず動く”用の命名ルールを決める📏✅
- 例:front.localhost / api.localhost / admin.localhost
- プロジェクトが増えても破綻しないコツ🧱
09. Dockerネットワークの超復習🌐🐳
- “コンテナ同士は名前で通信できる”の感覚
- ここが分かるとリバプロが急に楽になる✨
10. Composeでのサービス間通信の基本🧩🔗
- サービス名=DNS名っぽく使える感覚
- “外から入る入口”と“中の通信”を分けて考える🧠
11. リバースプロキシって結局なに?🚪➡️🏠
- 入口で受けて、中に振り分ける人
- 「開発環境の交通整理係」だと思えばOK🚥
12. リバプロ候補をざっくり比較する🆚😺
- Nginx:定番だけど設定はやや硬め
- Caddy:設定が素直&ローカルHTTPSも得意
- Traefik:Docker/Composeと相性よく“自動化寄り” (Traefikはv3系が主流ルートの一つになってるよ)(Traefik Labs)
13. 最短ルート:Caddyで“入口1個”を作る🚀🍞
- まずは1ファイルで動く成功体験
- パス振り分けで2アプリ共存を達成🎉
14. Caddyの基本ルール(読むだけで怖くなくなる)📘🙂
- “このホスト名に来たら、ここへ流す”
- “このパスはこっち” みたいな超基本だけ
15. フロント(Vite等)をリバプロ越しに見る🌬️🖥️
- devサーバーの特徴(HMRとか)
- リバプロ越しで詰まりやすいポイント(WebSocket)👻
16. APIを同じドメイン配下に寄せてCORSを減らす🧹✨
- “CORS地獄”が起きる仕組みをやさしく
- 入口でまとめると何が消える?😌
17. Cookieとセッションの地雷を避ける🍪💣
- SameSite / Secure / ドメイン属性の超ざっくり
- “なぜログインが飛ぶの?”を先に潰す🛠️
18. パス方式の設計ミニ練習:/app1 /app2 /api 🧪🧩
- どれをパスに向けると事故りにくい?
- 静的配信・SPA・APIの住み分け感覚🌿
19. サブドメイン方式の設計ミニ練習:app1.localhost など🏷️🎯
- “本番に近い感覚”になりやすい
- CookieやOAuthがあるときのメリットも👀
20. ここから自動化ルート:Traefik入門🚦🤖
- “ラベルでルーティングが増える”感覚
- Composeに書いていくだけで勝手に増える嬉しさ✨(Traefik Labs Docs)
21. Traefikのダッシュボードを安全に使う🧯📊
- 見える化は超便利
- でも公開しちゃダメな設定もあるので “ローカル限定”ルール💡
22. “共通の入口”を別スタックとして切り出す📦🚪
- proxy用Composeを1つ作って、各アプリを接続する
- 「毎回コピペで事故」を減らす設計🎁
23. 複数プロジェクトを同居させるためのネットワーク設計🧵🧠
- external network の考え方(超やさしく)
- “AプロジェクトとBプロジェクトが喧嘩しない”を作る🥊🚫
24. ポート競合を永久に起こさないコツ📛🔒
- 入口の80/443以外は “基本、外に出さない”方針
- DBやRedisを外公開しないのが標準🧊
25. ローカルHTTPSの必要性を知る
- “最近のWeb機能はHTTPS前提が増える”問題
- だからローカルでもHTTPSが欲しくなる場面がある😅
26. CaddyのローカルHTTPSを使ってみる🌟🔒
- ローカル/内部名に対してHTTPSを提供できる仕組み
- “証明書まわりの苦しさ”が軽くなる方向性✨(Caddy Web Server)
27. mkcertで「信頼されたローカル証明書」を作る🪄📜
- ブラウザ警告を減らしやすい
- ワイルドカードも作れて便利(例:*.example系)(GitHub)
28. ありがちトラブル辞典:404/502/つながらない📕🧯
- 404:ルールが合ってない
- 502:中のサービスが死んでる/ポート違い
- つながらない:名前解決 or ネットワーク接続ミス👀
29. ログと観測の最小セット👂📈
- 入口(リバプロ)のアクセスログを見る
- “どこまで届いて、どこで落ちた?”の切り分け🕵️
30. AIで爆速テンプレ化して卒業🎓🚀🤖
-
Copilot/Codexに「Caddy設定」「Traefikラベル」「Compose分離」を作らせる型
-
仕上げに“チェックリスト”を固定して、毎回勝つ✅✨
- 新PJ作ったら:名前ルール、入口追加、疎通、ログ確認、完了🎉
ざっくり補足(2026っぽい前提の裏取りメモ)🧾✨
- WindowsでのDockerは Docker Desktop+WSL2エンジンが基本ルートになってるよ🐳🪟(Docker Documentation)
- Nodeは v24 がActive LTS、v25 がCurrent という整理(2026-02時点)🟢(Node.js)
- TypeScriptは 5.9系が最新ノート更新されていて、6.0 Betaも出てきてる流れだよ🧠✨(typescriptlang.org)
次は、この30章の中身を「各章:目的→図→手順→よくあるミス→AIに聞く例→ミニ課題」で、テンプレ化した“本文フォーマット”も作れるよ📦✨