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

4.2 devcontainerで開発環境が分離される仕組み


✅ 要点まとめ


📘 イメージで理解:環境の分離とは?

❌ 分離されていない例(従来の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などを自動管理するため、環境をクリーンに保てる