CODE

DockerインストールからRails + Docker + MySQLで環境構築までの手順

想定読者

Railsの基礎学習が終わって自分でアプリを作りたいけど、
どんな環境で作ったらいいかわからない

という方向けに、
簡単かつ、Web系企業で良く使われている
Dockerを使った環境構築の手順をまとめます。

前提条件

今回はターミナルとVSCodeを使います。
これら二つの知識があることを前提として進めます。

 

Dockerのインストール

すでにDockerをインストール済みの方は飛ばしてください。

公式サイトからDockerをダウンロード&インストールします。

https://hub.docker.com/

1.URLを開くと下記の画面が表示されるので、「Get Started」をクリックします

2.Docker IDを作るよう求められるので、アカウントを作成しましょう。

3. アカウントを作成し、ログインするところまで進めてください

下記の画面まで来たら、「Get started Docker Desktop」をクリックしてください

 

4. Download Desktop for Macをクリックしてdmgファイルをダウンロードしてください

 

5.dmgファイルがダウンロードできたら、ファイルを開いてアプリケーションフォルダへ移動させればインストール完了です

アプリケーションフォルダにあるDocker.appを起動してください。

 

これでDockerを使う準備が整いました。

いよいよRailsの環境構築をしていきましょう。

アプリを作成する作業ディレクトリの作成

アプリを作成するためのディレクトリを作成します。
作成したいアプリの名前が良いでしょう。

今回はアプリ名・ディレクトリ名を「time_manager」として作成します。

以下、こちらの名前が出てきたら好きな名前へ変更してください。

ターミナルを開き、任意のディレクトリで下記コマンドを実行します

 command
$mkdir time_manager
$cd time_manager

Dockerfileの作成

VSCodeを起動し、作業ディレクトリをワークスペースとして開いてください

新しいファイルを「Dockerfile」という名前で作成してください

ファイルの中には以下を記述してください

「time_manager」と書かれている箇所はアプリ名に変更してください。

FROM ruby:2.6.5

RUN apt-get update -qq && \
apt-get install -y build-essential \
libpq-dev \
nodejs
# 以下time_managerは好きな名前に変更してください
RUN mkdir /time_manager
ENV APP_ROOT /time_manager
WORKDIR $APP_ROOT

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

RUN bundle install
ADD . $APP_ROOT

2020年1月現在で最新版のrubyバージョンは2.7.0ですが、
こちらで環境構築しようとするとうまくいきませんでしたので、
ruby:2.6.5を採用しています。

Gemfileの作成

VSCodeから同様に「Gemfile」という名前でファイルを作成してください
中身は以下を記述してください

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

Railsのバージョンは6.0.2が最新ですが、
試したところ、後々エラーとなったので、5.2.4を採用しています

Gemfile.lockの作成

「Gemfile.lock」ファイルを作成してください。
こちらは中身は空のままにしてください。

docker-compose.ymlの作成

ファイルを作成し、中身を下記の通り記述してください

version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: root
    ports:
      - "3306:3306"

  web:
    build: .
    command: rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/time_manager
    ports:
      - "3000:3000"
    links:
      - db

MYSQL_ROOT_PASSWORD: passwordの部分は好きなパスワードに変更して構いません。
後で使うので、メモしておいてください。

以下の「time_manager」の箇所もDockerfile同様好きなアプリ名へ変更してください

volumes:
- .:/time_manager

 

rails newコマンドを実行する

下記のコマンドを実行します。

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

このコマンドを実行するとことで、Railsのアプリ作成に必要なディレクトリなどが作成されます。

この時エラーが発生する場合の対処法

コマンドを実行した時に下記のエラーが発生する場合、

Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused “exec: \”rails\”: executable file not found in $PATH”: unknown
 command
$docker-compose build

コマンドを実行してから、再度

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

を実行してください。

 database.ymlを修正する

config/database.ymlにdatabase.ymlファイルがあるので、
こちらを修正します。

下記のように「default・・・」となっている箇所を探して下記のように上書きします。
password:の箇所に「docker-compose.ymlの作成」で設定したパスワードを記述します
特に変更していない人は、下記のままコピペでOKです。

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

 

コンテナをビルドして起動する

下記のコマンドを実行します。

 command
$ docker-compose build
$ docker-compose up

データベース作成

サーバーが起動したので、最後にデータベースを作成します。

 command
$ docker-compose run web rails db:create

localhost:3000にアクセスして確認!

ブラウザの検索ボックスで「localhost:3000」と入力しアクセスすると、
Railsの画面が立ち上がっていれば完成です。

 

 

-CODE

Copyright© MasanoriBlog , 2020 All Rights Reserved.