Dockerクイックスタートに倣いRails7の環境構築を行いました。
環境は以下の通りです。
Ruby: 3.2.2
Ruby on Rails: 7.0.6
Postgres: 12
前提
- Docker Desktopのインストールが必要です
本記事でわかること
- DockerによるRails7環境構築
作業ディレクトリの作成
作業用に任意ディレクトリ(本記事ではrails-docker
)を作成します。
# mkdir rails-docker
Dockerfileの作成
前項で作成したディレクトリに移動します。
# cd rails-docker
次にDockerfile
を新規作成して以下を記述します。
FROM ruby:3.2.2
RUN apt-get update && apt-get install -y \
build-essential \
libpq-dev \
nodejs
WORKDIR /rails-docker
COPY Gemfile /rails-docker/
COPY Gemfile.lock /rails-docker/
RUN bundle install
COPY . /rails-docker
GemfileとGemfile.lockの作成
Gemfile
とGemfile.lock
を新規作成する。
Gemfile
は以下を記述し、Gemfile.lock
は空ファイルとします。
source 'https://rubygems.org'
gem "rails", "~> 7.0.6"
docker-compose.ymlの作成
docker-compose.yml
を新規作成し、以下を記述する。
volume
の- .:/rails-docker
によりホスト側のdocker-compose.yml
があるディレクトリをコンテナ内のdocker-rails
の関連付けています。
version: '3'
services:
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/rails-docker
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:12
environment:
- POSTGRES_HOST_AUTH_METHOD=trust
rails new を実行する
docker-compose run
を実行することで、Railsアプリのひながたを生成する。
# docker-compose run web rails new . --force --database=postgresql
imageをbuildする
Linux上でDockerを動作している場合はrails new
による生成ファイルの所有者がroot
になっているのでsudo chown -R $USER:$USER .
を実行してからイメージをビルドしてください。
前項のrails new
でGemfile
が更新されました。
更新されたGemfile
をbundle install
したイメージを再度ビルドするためにdocker-compose build
を実行します。
# docker-compose build
database.ymlの修正
Railsアプリのデータベース接続設定をdb
サービスに接続するために
config/database.yml
のdefault: &default
に以下の記述を追加します。
host: db
username: postgres
password:
データベースの生成
docker-compose.yml
があるディレクトリで以下のコマンドを実行することでデータベースを生成する。
# docker-compose run web rails db:create
docker-composeでコンテナを起動する
# docker-compose up
ブラウザを起動してhttp://localhost:3000/
にアクセスすればRails起動画面が表示されます。