DockerでRuby on Rails 7の開発環境構築(M1 Mac)

この記事ではApple Silicon(M1, M2)を搭載したMacでDockerを使用し、Ruby on Rails 7の環境を構築する方法を解説しています。

前提となる環境とツール

今回使用する環境とツールはこちらです。

  • M1 Mac
  • Docker Desktop
  • Ruby on Rails 7.0.5
  • Ruby 3.1.4

DockerによるRails環境構築

まずはローカルにプロジェクトのディレクトリを作成します。

sh
mkdir myapp
cd myapp

以下のコマンドを実行して、必要なファイルを作成します

sh
touch Gemfile Gemfile.lock Dockerfile docker-compose.yml

Dockerfiledocker-compose.ymlを作成します。
わかりやすいようにDocker上にも同じ名前のディレクトリを作成しています。

Dockerfile
FROM ruby:3.1.4

ENV APP_ROOT /myapp
ENV LANG C.UTF-8
ENV GEM_HOME="/usr/local/bundle"
ENV PATH $GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

WORKDIR $APP_ROOT

ADD ./Gemfile $APP_ROOT/Gemfile
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock

RUN bundle install

ADD . $APP_ROOT

docker-compose.ymlではdocker-composeのバージョンやデータベース設定を記載しています。
今回は、entrypoint.shを利用せずにdocker-compose.ymlcommandの中に直接起動時のコマンドを書いています。
一時PIDファイルを削除してRailsを起動するコマンドになります。

docker-compose.yml
version: '3'
services:
  db:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - ./mysql_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: realworld_development
      MYSQL_USER: root
      MYSQL_PASSWORD: root
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - '3000:3000'
    depends_on:
      - db
Gemfile
source 'https://rubygems.org'
ruby '3.1.4'

gem 'rails', '7.0.5'

Gemfile.lockは空のままで大丈夫です。

Railsアプリの立ち上げ

準備ができたのでRailsアプリを立ち上げていきます。
まず、Dockerイメージをビルドし、Dockerコンテナを作成するために次のコマンドを実行します。

sh
docker-compose build

イメージが正常にビルドされたら、Railsアプリケーションを新しく作成します。
*apiモードで起動しない場合は--apiを削除してください

sh
docker-compose run --rm web rails new . --force --database=mysql --api

Railsアプリの config/database.yml ファイルを修正します。

yaml
default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: user
  password: password
  host: db

development:
  <<: *default
  database: db

これでRailsアプリが作成されたので以下のコマンドで起動します。

sh
docker-compose up

ブラウザでlocalhost:3000にアクセスし、Railsのデフォルトページが表示されることを確認します。

以上がDockerでRuby on Rails 7の開発環境構築する方法になります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です