🔖 第4章:devcontainerを使った開発の流れ(after)
4.2 devcontainerで開発環境が分離される仕組み
✅ 要点まとめ
- devcontainerを使うと、システム全体から独立した「開発者専用の作業環境」をコンテナとして作れる
- これは、ホストOS(bのUbuntu)や他のサービス(userDataやreverse-proxy)とは切り離された環境
- 開発に必要な言語、ライブラリ、設定、ポートなどをすべてコンテナ側に閉じ込めて管理できる
- そのため、他の人の環境やホストの状態に依存せず、安定して開発を進められる
📘 イメージで理解:環境の分離とは?
❌ 分離されていない例(従来のdocker開発)
あなたのMacやVM(ホストOS)
├─ Dockerコンテナ(auth)
│ ├─ システムの一部依存(ホストのvolume、パッケージなど)
│ └─ ローカルエディタで編集
├─ 他のアプリ(nginx、db)も同じ環境内にある
└─ gemやnodeのバージョン競合が起きやすい
✅ devcontainerを使った例(分離済み)
あなたのVSCode(a)からbへRemote SSH
└─ b上のauth/ で.devcontainerを使って
└─ VSCode専用のRails開発コンテナを作成
├─ Ruby、Node、Yarn、Gem全部コンテナ内
├─ ホスト環境を一切汚さない
├─ /workspace配下だけ編集対象
└─ 他のサービスやホスト環境とは完全に独立
🧠 分離がもたらすメリット
分離されているもの |
なぜ重要か |
Rubyのバージョン |
他のプロジェクトとの衝突を防ぐ(例:userDataとauthが違うRuby) |
node/yarn |
frontendビルドの互換性を保つ |
system package |
ホストのapt環境を一切汚さない(sqlite3なども独自に管理) |
git/ssh/rails |
ローカルのgit設定を使わず、dev用ユーザー設定で統一できる |
エディタ設定 |
VSCodeが自動的に補完・LSPを認識、しかもコンテナ内バージョンに従う |
🧪 .devcontainer/Dockerfile
の一例(Rails用)
# Rubyの公式イメージをベースにする
FROM ruby:3.2
# 必要なパッケージ(Node.js, Yarnなど)をインストール
RUN apt-get update -qq && \\
apt-get install -y build-essential libpq-dev nodejs yarn git
# 作業ディレクトリを指定
WORKDIR /workspace
# Rails用の補完やgemなどを自動管理するため、環境をクリーンに保てる