Breaking News

Default Placeholder Default Placeholder

Rails6が2019-08-19に正式リリースしました。早速Rails6を試してみたい、ということでまずは開発環境を作っていきたいと思います。

追記(2019-10-05): nginxを用いての開発環境構築手順もまとめました。nginxを噛ませたいという方はこちらを参照ください。

Rails6×Ruby2.6.3×Docker×Nginx×MySQLで開発環境を作る

Rails 6 インストール

今のローカルのrailsバージョンを確認

$ rails -v
Rails 5.2.2

Rails6をインストールする

# まずrbenvをアップグレードして6.0.0をインストールできるようにする
$ brew upgrade rbenv ruby-build
# インストール
$ gem i -v 6.0 rails

Rails のバージョンを確認する

$ rails -v
Rails 6.0.0

これでRails6が使えるようになりました。さて、次にRails6を使って新規プロジェクトを作ります。

Railsプロジェクト作成

$ rails new アプリケーション名 -d mysql

MySQLを使うために -d mysqlを付けています

Dockerfile作成

プロジェクト直下にDockerfileを作成します。いろいろなエラーが発生し、最終的にこれでいけたのでバージョンを貼ります。

FROM ruby:2.6.3-alpine
RUN mkdir -p アプリケーション名
WORKDIR アプリケーション名
RUN apk add git
RUN apk add --update bash perl
RUN apk add libxslt-dev libxml2-dev build-base
RUN apk add mysql-client mysql-dev
RUN apk add --no-cache file
RUN apk add yarn --no-cache
COPY . ./
VOLUME /アプリケーション名

docker-compose.yml

プロジェクト直下に docker-compose.ymlファイルを作成します。

version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_DATABASE: アプリケーション名_development
      MYSQL_USER: root
      MYSQL_ROOT_PASSWORD: DBのパスワード
    tty: true
    ports:
      - 3306:3306
    command: mysqld --character-set-server=utf8mb4 --explicit_defaults_for_timestamp=true
  rails:
    build:
      context: .
    volumes:
      - .:/アプリケーション名
      - /アプリケーション名/node_modules
    environment:
      RAILS_ENV: development
    depends_on:
      - db
    command: sh scripts/launch.sh
    ports:
      - 3000:3000

config/database.yml

hostにdocker-composeのdbコンテナ名を使うようにします。

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: パスワード
  host: db
  socket: /tmp/mysql.sock
development:
  <<: *default
  database: アプリケーション名_development

scripts/launch.sh

コンテナ起動時に実行するコマンドをまとめています。

bundle install
yarn install
rails s -b 0.0.0.0 -p 3000

イメージ作成

$ docker-compose build --no-cache

コンテナ起動

$ docker-compose up
...
...
...
...
rails_1  | Using webdrivers 4.1.2
rails_1  | Using webpacker 4.0.7
rails_1  | Bundle complete! 17 Gemfile dependencies, 76 gems now installed.
rails_1  | Bundled gems are installed into `/usr/local/bundle`
rails_1  | => Booting Puma
rails_1  | => Rails 6.0.0 application starting in development
rails_1  | => Run `rails server --help` for more startup options
rails_1  | Puma starting in single mode...
rails_1  | * Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas
rails_1  | * Min threads: 5, max threads: 5
rails_1  | * Environment: development
rails_1  | * Listening on tcp://0.0.0.0:3000
rails_1  | Use Ctrl-C to stop

ブラウザで開いてみる

localhost:3000 にアクセスする。こんな画面になって入ればOK!

まだまだDockerfileやdocker-composeは改良の余地があると思います、がとりあえず今回は環境構築ができるところまで。

最後までお読みいただきありがとうございました。