【Rails】DockerでRails+MySQLの環境を構築してみる

以前、DockerでRails + PostgreSQLの環境を作る記事を投稿したのですが、別のPCで環境を作ろうとしたらエラーが出てしまったので、PostgreSQLをMySQLに変えて再度、環境構築手順を整理しました。
基本的に下記のQiitaの記事を参考にしています。
Dockerを用いてRuby on Railsの環境構築をする方法( Docker初学者向け )
当記事はRailsが動く環境を作ることが目的の記事になります。
そのため、DockerファイルやYAMLファイルなどの設定値の解説は省略し、手順の一部簡略化を行っています。
目次
開発環境
- OS:Windows11
- Docker Desktopインストール済み
- VSCodeインストール済み
Dockerファイルを作成する
下記のコマンドを実行し、Dockerファイルを作成します。
エラーメッセージが表示されますが、Dockerファイルが作成されていれば問題ありません。
type nul > Dockerfile
下記の内容でDockerファイルを編集します。
FROM ruby:3.1.2
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs default-mysql-client vim
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

Gemfileを作成する
下記のコマンドを実行し、Gemfileを作成します。
エラーメッセージが表示されますが、Gemfileが作成されていれば問題ありません。
type nul > Gemfile
下記の内容でGemfileを編集します。
source 'https://rubygems.org'
gem 'rails', '~> 7.0.0'

Gemfile.lockを作成する
下記のコマンドを実行し、Gemfile.lockを作成します。
エラーメッセージが表示されますが、Gemfile.lockが作成されていれば問題ありません。
このファイルは編集不要です。
type nul > Gemfile.lock

YAMLファイルを作成する
下記のコマンドを実行し、YAMLファイルを作成します。
エラーメッセージが表示されますが、YAMLが作成されていれば問題ありません。
type nul > docker-compose.yml
下記の内容でYAMLファイルを編集します。
version: '3'
# docker-composeの書式のバージョンを指定します。(原則、最新を指定する)
services:
db:
image: mysql:5.7
environment:
MYSQL_USER: user
MYSQL_ROOT_PASSWORD: pass
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
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
volumes:
mysql_data:

Railsプロジェクトを作成する
下記のコマンドを実行して、コンテナをビルドします。
docker compose build

下記のコマンドを実行して、Railsプロジェクトを作成します。
docker compose run web rails new . --force --database=mysql --skip-bundle
成功すると、Rails関連のフォルダ・ファイルが生成されます。


コンテナを起動する
下記のコマンドを実行して、コンテナを起動します。
また、Gemfileが書き変わりますので、下記のコマンドをもう一度実行します。
docker compose up -d --build
エラーなく終了すればOKです。



DBを作成する
config/database.ymlを編集する
config/database.ymlの17行目付近にあるDBのパスワードとホストの設定を編集します。
# 以下2行を編集
password: pass
host: db

DBを作成する
下記のコマンドを実行して、DBを作成します。
docker compose exec web rails db:create

環境が構築できたか確認する
下記のURLを開きます。
問題なく表示されれば、RailsとMySQLのインストールが無事完了しています。

以上になります。
お読み頂き、ありがとうございました。