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は改良の余地があると思います、がとりあえず今回は環境構築ができるところまで。
最後までお読みいただきありがとうございました。