LoginSignup
6
5

More than 3 years have passed since last update.

Docker上でRuby + Rails + MySQLの開発環境を構築する

Last updated at Posted at 2019-06-13

はじめに

Docker上にRailsの開発環境を構築したのでメモとして残しておく。

前提

Dockerがインストール済みであること。
・Docker for Windows
https://www.docker.com/docker-windows
・Docker for Mac
https://docs.docker.com/docker-for-mac/install/

ルートディレクトリの作成

$ mkdir myapp

dockerfileの作成

FROM ruby:2.6.3
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 /my_app
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME

Gemfileの作成

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

空のGemfile.lockを作成

$ touch Gemfile.lock

docker-compose.ymlの作成

docker-compose.yml
version: '3'
services:
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/my_app
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: mysql:5.7
    volumes:
      - .mysql_data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=password

rails newの実行

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

rails newでアプリケーションのひな形となるディレクトリやファイルが自動生成される。
後で再度ビルドを行う必要がある為、--skip-bundleでビルドをスキップする。

Gemfileの編集

gem 'mini_racer', platforms: :ruby

Javascriptの実行エンジンであるv8を叩ける用にしてくれるgemである、mini_racerのコメントをはずす

buildの実行

$ docker-compose build

database.ymlの編集

database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password
  host: db

configフォルダ配下にあるdatabase.ymlの以下のように編集
・password
  docker-compose.ymlのMYSQL_ROOT_PASSWORDの値にする。
・host
  docker-compose.ymlのdepends_onの値にする。

コンテナを起動

$ docker-compose up -d

後で起動中のコンテナに入りrailsコマンドを実行する為、-dでバックグラウンドで実行しておく。

modelの作成

起動中のコンテナの一覧を確認する。

$ docker ps

以下の様に一覧が表示される。

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
c27856156df0        my_app_web          "bundle exec rails s…"   5 seconds ago       Up 4 seconds        0.0.0.0:3000->3000/tcp   my_app_web_1
f3c12d1b91be        mysql:5.7           "docker-entrypoint.s…"   About an hour ago   Up About an hour    3306/tcp, 33060/tcp      my_app_db_1

docker execでRailsアプリのコンテナに入る。

$ docker exec -it my_app_web_1 sh

modelを作成する為にrailsコマンドを実行する。

$ rails db:create

localhost:3000に接続する

welcom_rails.PNG
無事に開発環境が構築されました。:clap:

6
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
6
5