SakuLife

just do it !

5分で作れる docker on rails環境

たった5分でRailsに必要な環境を整えることができます。 すべて無料のソフトのみを利用していきます。

Mac上に、Mysqlをインストールするとなると地味に大変だと思うので、 ぜひdockerを使って数回程度の入力操作で快適なrailsLifeを楽しんでください。

完成する環境は以下の通りです。

* rails 5.2.1
* ruby 2.5.1
* Mysql5.7

実行環境

下記以外に事前にインストールが必要なものはありません。

  • docker for mac : 18.03.1

必要なファイル

myapp
├──docker-compose.yml
├──Gemfile
├──Gemfile.lock
├──Dockerfile
├──Makefile

ディレクトリ構造で表現すると上記ののようになります。 以降で詳しく説明していきます。

作業場所を作成する

$ mkdir myapp && cd ./myapp

必要なファイルを配置

docker-compose.yml

version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: pass
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

Gemfile

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

Gemfile.lock

空ファイルの作成のみ

Dockerfile

FROM ruby:2.5.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp

Makefile

# rails projectを作成
new:
    docker-compose run --rm web rails new . --force --database=mysql --skip-bundle

# Gem更新したタイミング
build:
    docker-compose build

# rails 起動
up:
    rm -rf tmp/pids/server.pid
    docker-compose up

# db作成
db/create:
    docker-compose run web rake db:create

# TOPページを作ってみよう
generate/controller_hoge_top:
    docker-compose run spring rails generate controller home top

help:
    cat ./Makefile

コマンドの実行

make new

このコマンドによりrails newが実行されます

config/database.yml

database.ymlを編集します。

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

development:
  <<: *default
  database: myapp_development

コマンドの実行

$ make build

このコマンドによりbundle installが実行されます

$ make up

このコマンドによりrails sが実行されます

$ make db/create

このコマンドにより、databaseが作成されます。

ブラウザで確認

ブラウザでlocalhost:3000を確認するとYay! You’re on Rails!が表示されます。

f:id:sakulife:20181005001417p:plain

dockerに関するオススメ書籍

dockerについて、もう少し勉強したい人にオススメです! 最近は特に流行っているので、抑えておいて間違い無しの技術です♩

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

次回

次回は、docker on railsを利用した、WEBAPIの実装を書いていこうと思います:)