DockerとRails5を試してみました
Quickstart: Compose and Rails
をベースに行いました
dockerやdocker-composeはインストール済み、Ubuntu 14.04上で行いました
Dockerfileを用意
$ vim Dockerfile
FROM ruby:2.3.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install -j4
ADD . /myapp
Gemfileを用意します
$ vim Gemfile
source "https://rubygems.org"
gem 'rails', '>= 5.0.0.beta4', '< 5.1'
Quickstartの手順通り、Gemfile.lockを用意
$ touch Gemfile.lock
docker-compose.ymlを用意
$ vim docker-compose.yml
version: '2'
services:
  db:
    image: postgres
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
rails newしてrailsアプリを作っておりきます
$ docker-compose run web rails new . –force –database=postgresql –skip-bundle
railsアプリのファイル権限がrootになっているので、権限を変えます
$  sudo chown -R $USER:$USER .
javascriptランタイムのために、therubyracerのコメントアウト状態を解除
$ vim Gemfile
gem 'therubyracer', platforms: :ruby
railsのデータベース設定を用意
$ config/database.yml
development: &default
  adapter: postgresql
  encoding: unicode
  database: postgres
  pool: 5
  username: postgres
  password:
  host: db
test:
  <<: *default
  database: myapp_test
buildして立ち上げます
$ docker-compose build
$ docker-compose up
http://(server domain):3000 にアクセス!

rails5が立ち上がっています!
scaffoldして簡単に画面を作ってみます
$ docker-compose run web rails generate scaffold Article title:string
$ docker-compose run web rails db:migrate
$ docker-compose up
http://(server domain):3000/articles にアクセス!

できてます
このままだと docker rm でコンテナを消すとデータベースのデータが消えます
$ docker-compose run web rails db:migrate
すれば戻りますが、データベースをホスト側に保存させてみます
volumes を bind します
postgresql用のディレクトリをホスト側へ用意
$ mkdir -p datastore/postgresql
docker-compose.yml に バインドさせる設定を追記
$ vim docker-compose.yml
version: '2'
services:
  db:
    image: postgres
    volumes:
      - ./datastore/postgresql:/var/lib/postgresql/data
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
$ docker-compose build
$ docker-compose up
これでデータベースのデータもホスト側へ保存されるようになりました
ここまでくれば開発ができそうです
WINGSプロジェクト 阿佐 志保 翔泳社 2015-11-20