DockerでRuby on Rails 7+MySQLの環境設定。備忘録とか。

IT

こんにちは、最近Ruby on Railsを勉強し始めているYamaC / ヤマシー です。

今回は、Dockerを使って、Ruby on Rails 7の開発環境を構築する方法について紹介します。
Webシステム開発については超初心者ですが、とりあえずこの方法で実施すれば、ローカルホストを立ち上げるところまではいけました。

この記事の前提条件

著者はMacBook Air(M1)を使用しています。
また、以下のソフトがインストールされていることが前提です。

Docker Desktop for Macのインストール

  1. Docker Desktopのダウンロードページにアクセスし、「Mac用のダウンロード マック – アップルチップ」を選択してダウンロードします。
  2. ダウンロードしたDocker.dmgファイルを開き、指示に従ってインストールします。
  3. インストール後、Docker Desktopを起動し、Dockerが正しく動作していることを確認します。

フォルダとファイルを作成する

どこでもいいので、プロジェクトのフォルダ、その中にファイルを作成します。強い人だとコマンドラインでパッと作るとは思いますが、よくわからないのでFinderを開いていい感じの場所に作っておきましょう。

my_rails_app/
 ├── Dockerfile
 ├── docker-compose.yml
 ├── Gemfile.lock
 └── Gemfile

必要なファイルたちを作成する

作ったファイルたちに以下の内容を書き込みましょう。

Dockerfileの作成

my_rails_appディレクトリにあるDockerfileを編集し、以下の内容を記述します。

FROM ruby:3.1
ARG RUBYGEMS_VERSION=3.3.20
RUN mkdir /rails_practice
WORKDIR /rails_practice
COPY Gemfile /rails_practice/Gemfile
COPY Gemfile.lock /rails_practice/Gemfile.lock
RUN bundle install
COPY . /rails_practice
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]

docker-compose.ymlの作成

同じくmy_rails_appディレクトリにあるdocker-compose.ymlを編集し、以下の内容を記述します。

services:
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: password
    ports:
      - '3306:3306'
    command: --default-authentication-plugin=mysql_native_password
    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:
      - .:/rails_practice
    ports:
      - "3000:3000"
    depends_on:
      - db
    stdin_open: true
    tty: true
volumes:
  mysql-data:
    driver: local

Gemfile と Gemfile.lockの作成

Gemfileに以下の内容を記述します。(Gemfile .lockには何も書かなくて良いです)

source 'https://rubygems.org'
gem 'rails', '~>7.0.4'

Railsアプリの初期設定・作成

以下のコマンドを実行して、新しいRailsアプリケーションを作成します。

docker-compose run web rails new . --force --no-deps --database=mysql
docker-compose build

ターミナルでこれを実行すると、なんかファイルが急に生成されまくります。びっくりすると思いますが、これでRailsアプリの作成が完了してます。

データベースの設定と作成

config/database.ymlを以下のように修正します。
(元々色々書いてあると思いますが、全部消してOKです)

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV.fetch("MYSQL_USERNAME", "root") %>
  password: <%= ENV.fetch("MYSQL_PASSWORD", "password") %>
  host: <%= ENV.fetch("MYSQL_HOST", "db") %>

development:
  <<: *default
  database: rails_practice_development

これを修正したら以下のコマンドを実行します。

docker-compose run web rake db:create

Docker Compose でアプリケーションを起動

以下のコマンドを実行して、アプリケーションを起動します。

docker-compose up

色々調べると これに -dをつけて起動する記事もたくさん出てきますが、ログは見れた方がいいので、このまま-dは付けずに実行してください。

あとはこれを実行したら、http://localhost:3000/ に飛んでみましょう。

こんな感じの日の丸みたいなRAILSが見れたら成功です!

まとめと今作ってるもの

今回は、MacでDockerを使用してRuby on Rails 7 + MySQLの開発環境を構築する方法を紹介しました。初心者でもセットアップできた手順を紹介したので、ぜひ実践してみてください。

最近はRuby on Railsで家計簿を管理するアプリを作ってみてます。

ちゃんとWEBアプリが動くようになるまで、どう進めていったかも共有したいです。

タイトルとURLをコピーしました