Ruby on Rails6・MySQLの開発環境の構築手順【Docker】

Ruby on Rails6・MySQLの開発環境の構築手順【Docker】

DockerでのRuby on Rails version6 APIモード・MySQLをDBに使用してのバックエンド環境を構築しましたので記録しておきます。

アプリディレクトリ作成

※今回はmangaディレクトリとしています。

mkdir manga

ファイル作成

touch {Dockerfile,docker-compose.yml,Gemfile,Gemfile.lock,my.cnf}

Dockerfile

FROM ruby:2.6.5

# 必要なパッケージのインストール(Rails6からWebpackerがいるので、yarnをインストールする)
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
        && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
        && apt-get update -qq \
        && apt-get install -y build-essential libpq-dev nodejs yarn

# 作業ディレクトリの作成
RUN mkdir /manga
WORKDIR /manga

# ホスト側(ローカル)(左側)のGemfileを、コンテナ側(右側)のGemfileへ追加
ADD ./Gemfile /manga/Gemfile
ADD ./Gemfile.lock /manga/Gemfile.lock

# Gemfileのbundle install
RUN bundle install
ADD . /manga

docker-compose.yml

version: '3'
services:
  db:
    image: mysql:5.7
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    volumes:
      - ./data:/var/lib/mysql
      - ./my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: root
    ports:
    - "3306:3306"

  web:
    build: .
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3001 -b '0.0.0.0'"
    tty: true
    stdin_open: true
    depends_on:
      - db
    ports:
      - "3001:3001"
    volumes:
      - .:/manga

my.cnf

[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

[client]
default-character-set=utf8

Gemfile

source 'https://rubygems.org'

gem 'rails', '~> 6.0.3'

rails new

docker-compose run web rails new . --force --database=mysql --skip-bundle --api --webpacker

config/database.yml

default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password  # docker-compose.ymlの MYSQL_ROOT_PASSWORD
  host: db    # docker-compose.ymlの service名

Docker起動

docker-compose build
docker-compose up -d

DB

docker exec -it <web container id> bash
rails db:create
rails db:migrate

ブラウザ確認

http://localhost:3001
または
http://0.0.0.0:3001

以上です

この手順でやれば自分の環境では他のエラー等はありませんでした。

参考サイト

こちらを参照させていただきました。もしうまくいかなかった場合はこちらも見ていただければと思います。

https://qiita.com/kurawo___D/items/53035a502f44d3b0835f

上の記事だけだとMySQL文字化けしたので、今回の記事では以下の記事の設定もマージしています。

https://qiita.com/luccafort/items/0553c589dcc6459746bc

1 Comment

コメントを残す

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