🔖 第4章:devcontainerを使った開発の流れ(after)

4.3 appのauthコンテナがdevcontainerのコードをリアルタイムに使う例


✅ 要点まとめ


📁 ディレクトリ構成のイメージ(b上)

/home/dev/
├── app/                           ← docker-composeを動かす本体
│   ├── docker-compose.yml
│   └── auth/                      ← この中身は devcontainer 側のコードで上書きされる
└── auth/                          ← git cloneされたauthリポジトリ
    └── .devcontainer/
        └── devcontainer.json


🧪 app/docker-compose.override.yml の例(volumeマウント)

# app/docker-compose.override.yml

version: '3.8'

services:
  auth:
    # devcontainer側のauthソースコードをコンテナの /app にマウント
    volumes:
      - ../auth:/app:cached
    environment:
      - RAILS_ENV=development

🔍 解説

この ../auth:/app のマウントにより、devcontainerが動かしているソースコードが /app に常に反映される。

つまりappのauthコンテナが /app を実行ディレクトリとしていれば、コードはVSCode内で編集してすぐ反映される。


🧪 devcontainer側の設定(再掲)

// auth/.devcontainer/devcontainer.json
{
  // このコンテナは auth のための開発環境
  "name": "auth-dev",

  // Ruby on Rails 環境を定義した Dockerfile
  "dockerFile": "Dockerfile",

  // docker build のコンテキスト(../ つまりauthの外のディレクトリ)
  "context": "..",

  // この作業フォルダがマウント対象(/workspace → ../auth)
  "workspaceFolder": "/workspace",

  // VSCodeのローカルワークスペースフォルダをマウント
  "mounts": [
    "source=${localWorkspaceFolder},target=/workspace,type=bind"
  ]
}