LoginSignup
9
21

More than 5 years have passed since last update.

Docker for MacでRailsの環境構築手順

Posted at

Docker for Macインストール

以下の公式サイトからDocker for Macをダウンロードしてインストール。
https://docs.docker.com/docker-for-mac/install

Docker for MacインストールHP

Docker for Macインストール

アプリケーションディレクトリを作成

mkdir app_name
cd app_name
mkdir docker
cd docker
mkdir rails
mkdir mysql

※dockerフォルダを作り、dockerに関するファイル類を整理してますが管理の仕方はお任せします。

Dockerfileの作成

cd rails
vi Dockerfile
./docker/rails/Dockerfile
FROM ruby:2.4.0
ENV LANG C.UTF-8
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN gem install bundler
WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN bundle install
ENV APP_HOME /app_name
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME

Dockerfileの書き方に関しては、以下のサイトを参考にしてください。
Dockerfile リファレンス

※ruby:2.4.0とイメージを指定していますが、イメージはあらかじめpullしておいてもしていなくても大丈夫です。
インストールしていない場合は、docker composeを実行した際に勝手にpullされます。
あらかじめpullする場合は、docker pull ruby:2.4.0

cd mysql
vi Dockerfile
./docker/mysql/Dockerfile
FROM mysql:5.7
ENV LANG C.UTF-8
RUN apt-get update -qq && apt-get install -y vim

※mysqlのmy.cnf等ファイルを覗くために、vimが必要だったので私の環境ではインストールしてます。

Dockerfileの書き方に関しては、以下のサイトを参考にしてください。
Dockerfile リファレンス

※mysql:5.7とイメージを指定していますが、イメージはあらかじめpullしておいてもしていなくても大丈夫です。
インストールしていない場合は、docker composeを実行した際に勝手にpullされます。
あらかじめpullする場合は、docker pull mysql:5.7

Gemfileの作成

./
vi Gemfile
./Gemfile
source 'https://rubygems.org'
gem 'rails'

Gemfile.lockの作成

./
touch Gemfile.lock

docker-compose.ymlの作成

./
vi docker-compose.yml
./docker-compose.yml
version: '2'
services:
  db:
    build:
      context: .
      dockerfile: ./docker/mysql/Dockerfile
    volumes:
      - ./docker/mysql/volumes:/var/lib/mysql
    extends:
      file: ./docker/mysql/password.yml
      service: password
  web:
    build:
      context: .
      dockerfile: ./docker/rails/Dockerfile
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    ports:
      - "3000:3000"
    volumes:
      - .:/app_name
    environment:
      RAILS_ENV: development
    extends:
      file: ./docker/mysql/password.yml
      service: password
    depends_on:
      - db

docker-compose.ymlファイルの書き方に関しては、以下のサイトを参考にしてください。
Compose ファイル・リファレンス

password.ymlを作成

./docker/mysql/password.yml
version: '2'
services:
  password:
    environment:
      MYSQL_ROOT_PASSWORD: password

プロジェクトの作成

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

Gemfileの変更

therubyracer の行のコメントを外す

./Gemfile
gem 'therubyracer', platforms: :ruby

Gemfileの変更を適用するためには以下のコマンドを実行

docker-compose build

database.ymlの修正

database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: <%= ENV['MYSQL_ROOT_PASSWORD'] %>
  host: db

development:
  <<: *default
  database: app_name_development

test:
  <<: *default
  database: app_name_test

データベース作成

docker-compose run --rm web rake db:create

railsサーバー/データベース起動

docker-compose up

http://localhost:3000へアクセス

※デーモンで立てる場合は-dオプションを使う。こちらのほうがおすすめです。

docker-compose up -d

railsサーバー/データベース停止

docker-compose down

その他コマンド一覧

  • マイグレート実行
docker-compose run --rm web rake db:migrate
  • seed実行
docker-compose run --rm web rake db:seed
  • コントローラー作成
docker-compose run --rm web rails g controller controller_name
  • モデル作成
docker-compose run --rm web rails g model model_name model_name:string
  • ルーティング確認
docker-compose run --rm web rake routes
  • railsコンソール
docker-compose run --rm web rails c
# sandboxオプション
docker-compose run --rm web rails c ----sandbox
9
21
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
9
21