Featured image of post Dockerコンテナで構築するローカル開発環境入門Featured image of post Dockerコンテナで構築するローカル開発環境入門

Dockerコンテナで構築するローカル開発環境入門

新しいプログラミング言語やフレームワークを試すたびに、ホストOSに直接ランタイム(Node.js, Python, Ruby等)やデータベース(PostgreSQL, MySQL)をインストールしていませんか?バージョン競合やアンインストール時のゴミファイルに頭を悩ませる「OS環境汚染」は、Dockerコンテナを活用すれば完全に過去のものになります。実用的なローカル開発環境の構築手順をハンズオン形式で整理します。

なぜホストOSに直入れしてはいけないのか?

案件AではPython 3.10、案件BではPython 3.12が必要……といったバージョンの衝突は日常茶飯事です。Dockerを使えば、アプリケーション実行環境とミドルウェアを独立した使い捨てのコンテナとして隔離できます。PCを新調した際も、リポジトリをクローンしてコマンドを1発叩くだけで寸分違わぬ開発環境が即座に再現されます。

実践:Webアプリ+DBの最小構成 compose.yaml

以下は、Node.js環境とPostgreSQLデータベースを連携させる標準的な compose.yaml の記述例です。

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - DATABASE_URL=postgres://devuser:devpass@db:5432/devdb
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    restart: always
    environment:
      POSTGRES_USER: devuser
      POSTGRES_PASSWORD: devpass
      POSTGRES_DB: devdb
    volumes:
      - db-data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

volumes:
  db-data:

開発をスムーズに進めるための2大Tips

  1. ホットリロードとボリュームマウント: ホスト側のソースコード変更を即座に反映させるため、カレントディレクトリをコンテナ内にバインドマウント(.:/app)します。ただし、コンテナ内の node_modules や仮想環境がホスト側の空フォルダで上書きされないよう、匿名ボリュームで保護するのがポイントです。
  2. VS Code Dev Containersの活用: エディタの拡張機能「Dev Containers」を組み合わせれば、VS Code自体をコンテナ内で起動し、コンテナ側の補完エンジンやリンターをホストと変わらない操作感でシームレスに利用できます。

クリーンで再現性の高い開発基盤を手に入れ、コードを書くことだけに集中しましょう。