Docker入門 #5 【Ruby on Rails5環境構築】

2_.png

はじめに

用語などは前回の記事を参照してください
Docker入門#1【Dockerとは】
Docker入門#2【Dockerチュートリアル】

今回は公式のQuickstart: Compose and Railsを改良したものです

完成品
https://github.com/wMETAw/rails5-on-docker

構成

service version
Ruby 2.3.3
Rails 5.0.0.1
Mysql 5.7

enter image description here

Dcokerfile

FROM ruby:2.3.3

# RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN apt-get update -qq
RUN apt-get install -y build-essential 
RUN apt-get install -y libpq-dev
RUN apt-get install -y nodejs

# ワーキングディレクトリの設定
RUN mkdir /myapp
WORKDIR /myapp

# gemfileを追加する
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock

# gemfileのinstall
RUN bundle install
ADD . /myapp

RUN apt-get ...はタイムアウトやエラーが発生する場合があるので縦並びに記述した方が良いです。
見やすいですし!

Gemfile , Gemfile.lock

source 'https://rubygems.org'
gem 'rails', '5.0.0.1'
# 空の.lockファイルを作成
$ touch Gemfile.lock

docker-compose.yml

db:
  image: mysql:5.7
  environment:
    MYSQL_ROOT_PASSWORD: root

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

rails newでプロジェクトを作成

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

DBhostの修正

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: root # docker-compose.ymlのMYSQL_ROOT_PASSWORD 
  host: db       # docker-compose.ymlのサービス名

起動

# コンテナをビルド
$ docker-compose build

# コンテナの一斉起動
$ docker-compose up

DB作成

$ docker-compose run web rails db:create

確認

http://localhost:3000/

2_.png

FOO↑↑

scaffoldでCRUDを生成してみる

# scaffold
$ docker-compose run web rails g scaffold users name:string

# migration
$ docker-compose run web rails db:migrate

http://localhost:3000/users

3_.png

さいごに

Rails場合、OSとgemとrubyのバージョンの依存関係でごちゃごちゃになり、各々のマシンだとインストールエラーが必ずと言っていいほど発生します
(v8・rubyracer・nokogiriなど)

環境を統一できるDockerはRailsに向いてるなーって思いました。

また、 Rails 5.0対応第4版Railsチュートリアルが2016年12月15日に公開されました!
これまた最高のタイミングです。
チュートリアル完了まで走破することをおすすめします!
私もやってみましたが、とてもよい復習になりましたよ!

今回で入門記事は終わりです
お疲れ様でした



0 件のコメント :

コメントを投稿