Posted at

Ruby on Rails 5 環境構築にDockerを使ってみた。

Qiita初投稿です。

独学でRuby on Railsを勉強しており、今回はDockerを使って環境構築してみました。

もし間違っている部分などありましたら、ご指摘下さい


開発環境

MacOS (Mojave 10.14.4)

Service
Version

Docker
18.09.2

docker-compose
1.23.2

Ruby
2.6.2

Ruby on Rails
5.2.3

PostgreSQL
11.2


1.Docker Desktop for Mac のインストール

https://docs.docker.com/docker-for-mac/install/

インストールにはある程度時間がかかります。

Dockerのオフィシャルサイトはもちろん全て英語表記ですので、Google翻訳を使って読み進めてもいいでしょう。

手順通りに設定していくと、クジラが微笑んでくれます。可愛いですね。


2.アプリケーション構築のための各種ファイル設定

開発していくディレクトリにアプリケーションを構築するために必要な4つのファイルを設定します。

今回はUserフォルダ配下にmy_appディレクトリを作成しました。

ファイルがない場合は、コンソール上で$ cd 開発ディレクトリ$ touch Gemfile.lockで対応してください。


  • Dockerfile

  • Gemfile

  • Gemfile.lock

  • docker-compose.yml


Dockerfile

FROM ruby:2.6.2

RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
RUN apt-get install -qy git

RUN mkdir /my_app
WORKDIR /my_app
ADD Gemfile /my_app/Gemfile
ADD Gemfile.lock /my_app/Gemfile.lock

RUN bundle install

COPY . /my_app


RUN apt-get update -qq && apt-get install -y nodejs postgresql-clientの行は、&&を消して

RUN apt-get update -qq

RUN apt-get install -y nodejs postgresql-client

と記述しても大丈夫です。


Gemfile

source 'https://rubygems.org'

gem 'rails', '5.0.0.1'


Gemfile.lock(空ファイル)




docker-compose.yml

version: "3"

services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/my_app
ports:
- "3000:3000"
depends_on:
- db


3.プロジェクト・データベースの作成

データベースをPostgreSQLに指定して、これまで設定したファイルを基にRailsプロジェクトを作成します。


terminal

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


Rails関連のファイルが作成されました。

データベースの情報を設定するために、config/database.ymlを変更し、データベースを作成していきます。


config/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
host: db
username: postgres
password:
pool: 5


terminal

$ docker-compose run web rake db:create



4.Dockerの起動・停止

最後にコンテナをビルドしてから、Dockerを起動させましょう。


terminal

$ docker-compose build

$ docker-compose up

http://localhost:3000 にアクセスして、Railsプロジェクトが立ち上がっているか確認してみましょう。

image.png

この画面が表示されていれば環境構築完了です。お疲れさまでした!

Dockerを停止する際は以下をコマンドに入力してください。


terminal

$ docker-compose stop



(参考リンク)


Docker オフィシャルページ

Quickstart: Compose and Rails


Qiita記事

Docker入門 #5 【Ruby on Rails5環境構築】

docker-compose コマンドまとめ