DcokerでRailsの環境構築してみた(Mac編)

新規ディレクトリを作成→ディレクトリに移動

$ mkdir myapp
$ cd myapp

Dockerfileを作成し、中身を記述

$ touch Dockerfile
FROM ruby:2.5.3
# RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN apt-get update -qq
RUN apt-get install -y build-essential
RUN apt-get install -y libpq-dev
RUN apt-get install -y nodejs
# ワーキングディレクトリの設定
RUN mkdir /myapp
WORKDIR /myapp
# gemfileを追加する
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
# gemfileのinstall
RUN bundle install
ADD . /myapp

Gemfileを作成

$ touch Gemfile

Gemfile内を下記の内容に書き換える

source 'https://rubygems.org'
gem 'rails', '5.2.1'

空のGemfile.lockの作成

$ touch Gemfile.lock

docker-compose.yml作成

version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
ports:
- "3000:3000"
links:
- db

Rails new の実行

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

DBhostを修正

  • config/database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password: root # docker-compose.ymlのMYSQL_ROOT_PASSWORD
host: db       # docker-compose.ymlのサービス名

Dockerの起動

$ docker-compose build # コンテナをビルド
$ docker-compose up # コンテナの一斉起動

DBの作成

$ docker-compose run web rails db:create

ブラウザで確認

http://localhost:3000/

f:id:h2meo:20181006235642p:plain