了解しました。以下に 第5章:devcontainer構成の実例(authリポジトリ) の中の
5.2 DockerfileのRails開発環境構築例(Mac時代との対比) を丁寧にまとめます。
mac時代の開発経験(開発環境c)との違いも意識して、一行コメントつきで具体的に説明します。
auth/
├── .devcontainer/
│ ├── devcontainer.json
│ └── Dockerfile ← 開発用Rails環境を定義するファイル
├── app/
├── Gemfile
├── Gemfile.lock
└── ...
# .devcontainer/Dockerfile
# RubyとNode.jsを含んだ公式のRails開発ベースイメージを使用
FROM ruby:3.2
# nodeやyarn、buildツールをインストールするための準備
# 必要なパッケージはOS依存なので慎重に選ぶ
RUN apt-get update -qq && apt-get install -y \\
build-essential \\
libpq-dev \\
nodejs \\
yarn \\
git \\
curl \\
vim
# 作業ディレクトリを指定(devcontainer.jsonの "workspaceFolder" と一致させる)
WORKDIR /workspace
# GemfileとGemfile.lockを先にコピー(bundle installのキャッシュ最適化)
COPY ./Gemfile ./Gemfile.lock ./
# bundlerを最新版にアップグレード(なくてもOKだが安定性のため)
RUN gem install bundler
# gem install(最初の1回だけ)
RUN bundle install
# ソースコード全体をコピー(最初のセットアップ用)
COPY . .
# 起動用のデフォルトコマンド(devcontainer.jsonのpostCreateCommandで上書きされることも多い)
CMD [ "bash" ]
項目 | Mac + Docker Compose(c) | devcontainer(今の環境) |
---|---|---|
Dockerfile管理 | 自分で作成・管理 | devcontainerで再利用できる |
起動方法 | docker-compose up 手動起動 |
VSCodeが自動起動(再現性が高い) |
エディタとの連携 | 別プロセスでdockerを使っていた | VSCode内にターミナル・拡張が統合される |
volumeのマウント | 自分でdocker-compose.ymlに書いていた | mounts で自動設定 |
gem install, db作成 | 自分でコマンド入力 | postCreateCommand で自動実行 |
環境構築の再現性 | 開発者ごとに微妙に差異が出ることも | .devcontainer ごとGit管理で完全一致可能 |