概要
- Dockerを使用したRailsの開発環境を構築
- DBはPostgreSQLを使用
- ローカル開発環境で構築(PostgreSQLのユーザー名、パスワードは簡易なものを使用)
前提
- Mac、Windows10のローカル開発環境で動作
- 「Docker for Windows」か「Docker for Mac」がインストール済みであること
ディレクトリ構造
├─src
│ ├─Gemfile
│ └─Gemfile.lock
├─Dockerfile
└─docker-compose.yml
準備するファイル
ディレクトリ構造にある4つのファイルの内容は下記になります。
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 mkdir /app
RUN mkdir /app/src
ENV APP_ROOT /app/src
WORKDIR $APP_ROOT
ADD ./src/Gemfile $APP_ROOT/Gemfile
ADD ./src/Gemfile.lock $APP_ROOT/Gemfile.lock
RUN bundle install
ADD . $APP_ROOT
docker-compose.yml(※WindowsとMacで記述を分ける箇所有)
version: '3'
services:
postgres:
image: postgres
ports:
- "3306:3306"
volumes:
- ./tmp/db:/var/lib/postgresql/data #MacOSの場合
- app_postgre:/var/lib/postgresql/data #Windowsの場合
environment:
POSTGRES_USER: 'admin'
POSTGRES_PASSWORD: 'admin-pass'
restart: always
app:
build: .
image: rails
container_name: 'app'
command: bundle exec rails s -p 80 -b '0.0.0.0'
ports:
- "80:80"
environment:
VIRTUAL_PORT: 80
volumes:
- ./src:/app/src
depends_on:
- postgres
restart: always
#下記はWindowsの場合追加
volumes:
app_postgre:
external: true
※PostgreSQLはWindowsではマウントできないようなので、参照先を外部に指定します。
Gemfile
source 'https://rubygems.org'
ruby '2.6.3'
gem 'rails', '5.2.3'
Gemfile.lock
ファイルの中身は空でOK
手順
ボリューム作成(※Windowsの場合のみのコマンド)
$ docker volume create --name app_postgre
※PostgreSQLはWindowsではマウントできないようなので、参照先を外部にするためのコマンドです。
スケルトンアプリ作成
$ docker-compose run app rails new . --force --database=postgresql --skip-bundle
database.ymlを修正
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: admin
password: admin-pass
host: postgres
イメージ再ビルド
※処理完了までちょっと時間がかかることがあります。。。
$ docker-compose build
コンテナ立ち上げ
$ docker-compose up -d
PostgreSQLにRailsのDBを作成
$ docker-compose run app rails db:create
これで、http://localhostにブラウザでアクセスすると、Railsのインストール完了画面がでてきました。
トップページ作成
とりあえずトップページを表示させたい場合は下記コマンドを実行
$ docker-compose run app rails g controller Home top
「get 'home/top'」を「root to: 'home#top'」を変更
# ・・・
root to: 'home#top'
# ・・・
インストール後の作業
私の記事ですが、下記の手順もまとめましたので、参考にしていただければ幸いです。
【Rails】「config」の使い方 - Qiita
サイトから送信するSMTPサーバー情報や、ソーシャルログインなどで使用するAPIキーをGitにアップロードする際に、外部に情報が流出させないようにする設定です。
【Rails】Bootstrap4・jQueryを適用
フロントでBootstrap4とjQueryを適用して構築したい時は便利
Font Awesome適用
アイコンを気軽に使用したい時はこちらが便利。メールアドレスの登録・アンケート回答すると、無料でたくさんのアイコンが使用できます。
【devise】メール認証のサインアップ・イン・アウト機能
メール認証で、サイトに新規会員登録機能や、ログイン・ログアウト機能を搭載する設定です。
【Rails】【Devise】twitter・Facebookログイン実装
上記のメール認証に加えてソーシャルログイン機能を実装する手順です。