docker rails

事前準備

以下のファイルをルートに作成
* Dockerfile
* Gemfile
* Gemfile.rock
* docker-compose.yml

パスを通す

eval "$(docker-machine env default)"

Dockerfile

node.jsも必要

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

docker-compose.yml

version: '2'
services:
  db:
    image: mysql
    ports:
      - "3306:3306"
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
  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', '4.2.6'

Gemfile.lock

ブランクでOK

database.yml

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password:
  host: db

development:
  <<: *default
  database: myapp_development

メソッド実行

// ローカルにアプリケーション作成。ローカルにアプリケーションを作成するためのコンテナも作成される。(webコンテナとは別)
docker-compose run web rails new . --force --database=mysql --skip-bundle

// build
docker-compose build

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

サイト確認

192.168.99.100:3000

dbに接続

myapp_development dbが作成されていることを確認できる

mysql -h 192.168.99.100 -P3306 -u root

コンテナにbash接続

docker exec -it {コンテナID} bash

参考

http://blog.toshimaru.net/docker-compose-rails/
https://docs.docker.com/compose/rails/