DockerでRails開発環境をセットアップする方法

Railsアプリケーションのコードベースを動かすのは難しくないはずです。しかし、開発者は環境問題のトラブルシューティングに何時間も費やします。Dockerがこれを解決します。

なぜ開発にDockerを?

  • 一貫した環境 - どのマシンでも同じように動作
  • 簡単なオンボーディング - 新しい開発者は1つのコマンドを実行するだけ
  • 分離された依存関係 - 他のプロジェクトと競合しない
  • 本番環境との同等性 - 本番に近い環境で開発

基本セットアップ

Dockerfileを作成:

FROM ruby:3.2

RUN apt-get update -qq && apt-get install -y nodejs postgresql-client

WORKDIR /app

COPY Gemfile Gemfile.lock ./
RUN bundle install

COPY . .

CMD ["rails", "server", "-b", "0.0.0.0"]

docker-compose.ymlを作成:

version: '3.8'

services:
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: password
    volumes:
      - postgres_data:/var/lib/postgresql/data

  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && rails server -b 0.0.0.0"
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    depends_on:
      - db
    environment:
      DATABASE_URL: postgres://postgres:password@db/app_development

volumes:
  postgres_data:

アプリを実行

docker compose build
docker compose up

http://localhost:3000にアクセスすれば、開発の準備完了です。

ヒント

  • ライブコードリロードのためにボリュームマウントを使用
  • 必要に応じてRedis、Sidekiqを追加
  • 共通コマンド用にbin/docker-devスクリプトを作成

Dockerは「私のマシンでは動く」問題を解消し、チームが機能の構築に集中できるようにします。