#前提
railsでDockerの環境構築をした時の備忘録。
Docker for macインストール済み
#本題
rails
|--Dockerfile
|--Gemfile
|--Gemfile.lock
|--docker-compose.yml
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(コンテナ仮想環境の雛形が作成される)
source 'https://rubygems.org'
gem 'rails', '5.0.0.1'
Gemfile(Installしたいgemを定義)→bundle installコマンド実行→gemがインストールされる→InstallしたgemがGemfile.lockに記載される
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プロジェクトの作成
rails$ docker-compose run web rails new . --force --database=mysql
docker-compose run web
でwebサービスのコンテナで後ろのコマンドを実行するコマンド
--force
は、既存ファイルを上書きするオプション
--databace=mysql
はMySQLを使用する設定を入れるオプション
buildが完了したら、Railsで使用するデーターベースファイルを編集
#省略
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password: password #編集
host: db #編集
#省略
設定が完了したら下記のコマンドをターミナルに入力
rails$ docker-compose up -d
上記は、現在のディレクトリにあるdocker-compose.ymlに基づいてコンテナ(仮想環境)を起動するコマンド
続いて、開発環境用のデータベースが作成されていないため、下記コマンドで作成
rails$ docker-compose run web bundle exec rake db:create
bundle exec rake
の部分は、Rails環境にインストールされているrakeコマンドを実行している
rake db:create
でRailsで使用するデータベースをMySQLサーバー上に作成してくれる
ブラウザでlocalhost:3000と入力しRailsの画面が出てきたら完了!