LoginSignup
1
1

More than 3 years have passed since last update.

Rails Docker 環境構築

Last updated at Posted at 2020-05-17

前提

railsでDockerの環境構築をした時の備忘録。
Docker for macインストール済み

本題

rails
|--Dockerfile
|--Gemfile
|--Gemfile.lock
|--docker-compose.yml
Dockerfile.
FROM ruby:2.4.5
RUN apt-get update -qq && apt-get install -y build-essential nodejs
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app

DockerfileをbuildしDocker Image(コンテナ仮想環境の雛形が作成される)

Gemfile.
source 'https://rubygems.org'
gem 'rails', '5.0.0.1'

Gemfile(Installしたいgemを定義)→bundle installコマンド実行→gemがインストールされる→InstallしたgemがGemfile.lockに記載される

docker-compose.yml
version: '3'
services:
  web:    #Railsコンテナの定義
    build:  .  #Dockerfileを元にイメージを作成し使用すること
    command: bundle exec rails s -p 3000 -b '0.0.0.0'  #Rails起動のコマンド
    volumes:
      - .:/app
    ports:
      - 3000:3000  #<公開するポート番号>:<コンテナ内部の転送先ポート番号>
    depends_on:
      - db  #Railsが起動する前にMySQLサーバーが先に起動するように設定
    tty: true
    stdin_open: true
  db:    #MySQLサーバーコンテナの定義
    image: mysql:5.7
    volumes:
      - db-volume:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
volumes:
  db-volume:  #この定義によりPC上にdb-volumeという名前でボリューム(データ保持領域)が作成される

上記設定が終わったらターミナルにてRailsプロジェクトの作成

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

docker-compose run webでwebサービスのコンテナで後ろのコマンドを実行するコマンド

--forceは、既存ファイルを上書きするオプション
--databace=mysqlはMySQLを使用する設定を入れるオプション

buildが完了したら、Railsで使用するデーターベースファイルを編集

config/database.yml
#省略

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: password  #編集
  host: db  #編集

#省略

設定が完了したら下記のコマンドをターミナルに入力

terminal.
rails$ docker-compose up -d

上記は、現在のディレクトリにあるdocker-compose.ymlに基づいてコンテナ(仮想環境)を起動するコマンド

続いて、開発環境用のデータベースが作成されていないため、下記コマンドで作成

terminal.
rails$ docker-compose run web bundle exec rake db:create

bundle exec rakeの部分は、Rails環境にインストールされているrakeコマンドを実行している
rake db:createでRailsで使用するデータベースをMySQLサーバー上に作成してくれる

ブラウザでlocalhost:3000と入力しRailsの画面が出てきたら完了!

1
1
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
1
1