0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

railsチュートリアルMysql化とDocker化

Last updated at Posted at 2021-11-16

今回、下記の動画を参考にしつつRailsチュートリアルのプロダクトをDocker化させてみました。

Docker超入門講座 合併版 | ゼロから実践する4時間のフルコース
https://www.youtube.com/watch?v=lZD1MIHwMBY&t=3538s

railsチュートリアルではデフォルトではpostgresqlが選択されていますが、IT企業で採用されているデータベースはMysqlが一番多いという話を聞いたので変更してみます(上記紹介動画でもmysqlが紹介されております。mysql8系で紹介されておりますが、herokuの無料プランが5系のみとの事なので5系でDBを設定します。)

ただ、M1のMacの場合はDockerでMysqlは、サポートされていないのでMariaDBにした方が良いです。(私はintelのMacとM1のMacを持っているので今回は試験的にmysqlにしてますが、恐らくこの先、新しくプロダクトを作る場合mysqlを選択するならMariaDBを選択するって言うのが主流になっていくのでは無いかと思われます。)

作業ディレクトリの作成

作業ディレクトリを作成し、そのディレクトリへ移動します。

自由に名前を決めてください。(筆者の場合はrails_dockerとしました)

$_は作成したdirにcdするコマンドです。

$ mkdir rails_docker && cd $_

Gitの初期化

最初にGitの初期化を行います。下記からは作成したrails_dockerディレクトリをrootとします。

root $ git init

rootディレクトリに各ファイルを作成します

sample_appディレクトリとDockerfileとdocker-compose.ymlファイル。sample_appの下の階層にGemfileを作成

root $ mkdir sample_app && touch {$_/Gemfile,Dockerfile,docker-compose.yml}

image.png

各ファイルを編集します。

Gemfile

source 'https://rubygems.org'
gem 'rails',  '6.0.3'

Dockerfile

FROM ruby:2.7.4

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 nodejs yarn
WORKDIR /app
COPY ./sample_app /app
RUN bundle config --local set path 'vendor/bundle' \
  && bundle install

docker-compose.yml

version: '3'
services:
  db:
    image: mysql:5.7
    volumes:
      - ./sample_app/db/mysql_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password

  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - ./sample_app:/app
    ports:
      - "3000:3000"
    environment:
      RAILS_ENV: development
    depends_on:
      - db

上記のように設定します。

Dockerをbuildする。

root $ docker-compose build

rootディレクトリでrails newする。

root $ docker-compose run web rails new . --force --database=mysql

rails newされたら

再度imegeをbuildする

root $ docker-compose build

上記操作でrailsの雛形が完成。

DBの設定をする。

[sample_app/config/database.yml]

passwordにpasswordと入れるのとhost(dbの接続先)をdbに変更する。

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

設定が完了したらDBを下記コマンドで作成

root $ docker-compose run web rails db:create

DBの作成が完了した。

下記コマンドでコンテナを立ち上げると問題なく動作します。

root $ docker-compose up

以上でローカルの環境の設定は完了です。
image.png

###感想
本番環境のデプロイ方法は参照動画でも紹介して下さっておりますがrailsチュートリアルを進めていくと、ローカル環境では問題ないのにheroku側ではApplication errorになってしまいます。heroku logs --tailコマンドでログを辿り、色々やったら直りましたが、無料枠でherokuを本番環境にする場合には、mysqlよりpostgresqlが一番フィットするのかもなって印象を受けました。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?