LoginSignup
4
5

More than 5 years have passed since last update.

Rails on Docker on OSX環境構築

Last updated at Posted at 2017-04-09

mkdir container_01
docker pull ruby:2.4.1-alpine
touch Dockerfile docker-compose.yml Gemfile Gemfile.lock

docker-compose up -d --buildで使用される

Dockerfile
##### Base Image #####
FROM ruby:2.4.1-alpine

ENV LANG en_US.UTF-8

##### イメージ上でコマンドを実行 #####
RUN apk update && \
    apk upgrade && \
    apk add --update\
    bash \
    build-base \
    curl-dev \
    git \
    libxml2-dev \
    libxslt-dev \
    linux-headers \
    mysql-dev \
    nodejs \
    openssh \
    ruby-dev \
    ruby-json \
    tzdata \
    yaml \
    yaml-dev \
    zlib-dev

RUN gem install bundler

##### WORKDIRを指定してコマンド実行 #####
WORKDIR /tmp
COPY Gemfile Gemfile
COPY Gemfile.lock Gemfile.lock
RUN bundle install

ENV APP_HOME /myapp
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
COPY . $APP_HOME
Gemfile
source 'https://rubygems.org'
gem 'rails'
docker-compose.yml
version: '2'
services:
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db
    container_name: web

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root_password
    volumes_from:
      - datastore
    container_name: db

  datastore:
    image: busybox
    volumes:
      - ./datastore_container:/var/lib/mysql
    container_name: datastore
docker-compose run web rails new . --force --database=mysql --skip-bundle

JavaScript runtime 用に therubyracer の gem インストールを有効化
therubyracer

  • gem 'therubyracer', '0.11.3'
  • gem 'libv8', '3.11.8.13'
Gemfile
source 'https://rubygems.org'

git_source(:github) do |repo_name|
  repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
  "https://github.com/#{repo_name}.git"
end

gem 'rails', '~> 5.0.2'
gem 'mysql2', '>= 0.3.18', '< 0.5'
gem 'puma', '~> 3.0'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'jquery-rails'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'
gem 'therubyracer', '0.11.3'
gem 'libv8', '3.11.8.13'
group :development, :test do
  gem 'byebug', platform: :mri
end
group :development do
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '~> 3.0.5'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
config/database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: root_password
  host: db

development:
  <<: *default
  database: container_development

test:
  <<: *default
  database: container_test

production:
  <<: *default
  database: myapp_production
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
docker-compose up -d --build
docker-compose run web rails db:create
docker-compose run web rails generate scaffold user name:string
docker-compose run web rails db:migrate
gem install libv8 -v '3.11.8.17' -- --with-system-v8
4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5