docker-compose.yml
で /app/auth
をコードの実行場所に指定している/app/auth
に対して、リアルタイムでソースコードをbind mount する/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内で編集してすぐ反映される。
// 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"
]
}