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