Docker for Macインストール
以下の公式サイトからDocker for Macをダウンロードしてインストール。
https://docs.docker.com/docker-for-mac/install
アプリケーションディレクトリを作成
mkdir app_name
cd app_name
mkdir docker
cd docker
mkdir rails
mkdir mysql
※dockerフォルダを作り、dockerに関するファイル類を整理してますが管理の仕方はお任せします。
Dockerfileの作成
cd rails
vi 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
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
source 'https://rubygems.org'
gem 'rails'
Gemfile.lockの作成
touch Gemfile.lock
docker-compose.ymlの作成
vi 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を作成
version: '2'
services:
password:
environment:
MYSQL_ROOT_PASSWORD: password
プロジェクトの作成
docker-compose run --rm web rails new . --force --database=mysql --skip-bundle
Gemfileの変更
therubyracer の行のコメントを外す
gem 'therubyracer', platforms: :ruby
Gemfileの変更を適用するためには以下のコマンドを実行
docker-compose build
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
※デーモンで立てる場合は-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