東京都府中市、九段下のWEB制作会社Maromaroのブログです

2020.01.20

taka

[windows向け]初心者向けRuby on RailsでDocker環境構築

こんにちは。Maromaroのtakaです。

はじめに

Dockerの導入で手間取ってしまったので、備忘録として書きます。
WindowsでRuby on railsがDockerのコンテナ上で起動するところまでになります。 
Macは特に問題はないのですが、WindowsだとWindows10pro以外はDocker for Windowsが入れられないので、環境の構築が若干変わるため、かなりハマります。(実体験)

この記事は超初心者向けです。(私自身がDocker超初心者なので…)

使用する環境

 
  • windows10pro
  • Ruby2.5.3
  • Rails5.2.2
  • MySQL5.7
  • Docker for Windows

手順

Docker for WindowsをインストールしたらDockerのsettingで左のメニューにShared Driveが存在するか見てください。
その項目がないと(ドライブも設定した状態)Rails newしてもフォルダが一時的にDockerに上げられるだけで、Localに保存されません

 

まず適当な場所にフォルダを作ります。
今回フォルダ名は Sample とします。

フォルダの中に以下のファイルを作成します。
拡張子無しのファイル作成の際はtxtファイル等で作成し、拡張子を変更しても構いません。
(ちなみに拡張子無しファイルは 保存するときにファイル名を ” ”  ダブルクォーテーションで囲めば出来ます。)

ファイル名: Dockerfile
Docker上で動作させるコンテナの構成情報を記述するためのファイル。

 
#Dockerfile
FROM ruby:2.5.3
RUN apt-get update -qq && \
    apt-get install -y build-essential \ 
                       libpq-dev \        
                       nodejs           
RUN mkdir /app_name 
ENV APP_ROOT /app_name 
WORKDIR $APP_ROOT
ADD ./Gemfile $APP_ROOT/Gemfile
ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock
RUN bundle install
ADD . $APP_ROOT
 

ファイル名: Gemfile
Ruby on Rails で使用するgemのリスト

#Gemfile
source 'https://rubygems.org'
gem 'rails', '5.2.2'

ファイル名: Docker-compose.yml 
コンテナの設定を記載したファイル 基本的にcompose-upのタイミングで読み込まれる。
記載された複数のコンテナが立ち上がる。
下記のだと、webがrails本体のコンテナ、dbがデータベースのコンテナという認識になる。(恐らく)

#Docker-compose.yml
version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: root
    ports:
      - "3308:3308"

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

ファイル名: Gemfile.lock
build等で更新されたGemfileのgemとバージョン等が記載されているファイル。

#Gemfile.lock 
#中身は空でOK

上記4ファイルを作成したフォルダに入れてください。
現時点でフォルダ構成は以下になると思われます。

sample   ---- Dockerfile
           |-- Gemfile
           |-- Gemfile.lock
           |-- docker-compose.yml


コマンドプロンプト等で以下のコマンドを順に入力しましょう。

Rails Newを実行
docker-compose run web rails new . --force --database=mysql --skip-bundle

コンテナをビルド

docker-compose build

コンテナを起動

docker-compose up -d

データベースの作成

docker-compose run web rails db:create

 

その後ブラウザで localhost:3000 にアクセスし、表示できているか確認しましょう。
以下の画面が表示されれば環境の構築は完了です。