Dockerを使用したRailsアプリケーションの環境構築ガイド
この記事では、Dockerを使用してRailsアプリケーションとPostgreSQLデータベースをコンテナ化し、ローカル環境で簡単にセットアップする方法を詳しく解説します。本ガイドに従うことで、http://localhost:3000
でRailsアプリケーションにアクセスできるようになります。
目次
前提条件
以下のソフトウェアがインストールされていることを確認してください。
- Git: ソースコードをクローンするために必要です。
- Docker: コンテナを管理・実行するために必要です。
- Docker Compose: 複数のコンテナを一括で管理・起動するために必要です。
リポジトリのクローン
まず、プロジェクトのリポジトリをローカルにクローンします。
git clone https://github.com/your-username/rails-docker.git
クローンが完了したら、プロジェクトディレクトリに移動します。
cd rails-docker
Dockerfileの設定
プロジェクトのルートディレクトリにある Dockerfile を設定します。以下はその内容です。
# ベースイメージとして公式のRubyイメージを使用
FROM ruby:3.2.2
# 必要なパッケージをインストール
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
# 作業ディレクトリを設定
WORKDIR /myapp
# GemfileとGemfile.lockをコピー
COPY Gemfile Gemfile.lock ./
# Bundlerをインストール
RUN gem install bundler -v 2.4.10
RUN bundle install
# アプリケーションのソースコードをコピー
COPY . .
# 追加の設定(必要に応じて)
ENV RAILS_ENV=development
ENV RAILS_LOG_TO_STDOUT=true
# ポートを公開
EXPOSE 3000
# サーバーを起動
CMD ["bin/rails", "server", "-b", "0.0.0.0"]
Point
・Rubyの公式イメージ ruby:3.2.2 を使用。
・Node.jsとPostgreSQLクライアントをインストール。
・Gemfile と Gemfile.lock を先にコピーし、依存関係をインストール。その後、アプリケーションのソースコードをコピー。
・環境変数 RAILS_ENV と RAILS_LOG_TO_STDOUT を設定。
・ポート 3000 を公開し、Railsサーバーを起動。
docker-compose.ymlの設定
次に、docker-compose.yml ファイルを設定します。これにより、Webとデータベースのサービスを定義します。
version: "3.8"
services:
db:
image: postgres:12
volumes:
- db_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: myapp
POSTGRES_PASSWORD: password
POSTGRES_DB: myapp_development
ports:
- "5432:5432"
# 今回はDB CREATEとMIGRATEを実装しているが本来は初回のみCREATEをするべきだ
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bin/rails db:migrate && bin/rails server -b 0.0.0.0 -p 3000"
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
environment:
DATABASE_URL: postgres://myapp:password@db:5432/myapp_development?sslmode=disable
RAILS_ENV: development
RAILS_LOG_TO_STDOUT: "true"
volumes:
db_data:
コンテナのビルドおよび起動
設定が完了したら、Dockerコンテナをビルドし、起動します。
docker-compose up
その後ブラウザでhttp://localhost:3000 にアクセスします。
まとめ
Dockerを使用することで、Ruby on RailsアプリケーションとPostgreSQLデータベースの開発環境を効率的に構築できます。本記事では、Dockerfile と docker-compose.yml を設定し、データベースの設定やコンテナのビルド・起動方法を解説しました。