LoginSignup
6
4

More than 3 years have passed since last update.

Rails6.0 + Docker上のPostgreSQLでの開発環境を作成する。

Last updated at Posted at 2019-09-22

はじめに

Qiita初投稿.
Rails歴は今夏のインターンで始めて3週間くらいです.
この記事はインターンで教えてもらったことのアウトプット兼, 自分の備忘録のために書きました.
不足している要素などあればコメントなどでご教授お願いします.

概要

ローカル環境のRailsとDocker環境上のPostgreSQLで開発環境を作成する.

この開発環境を作成する理由

  • 個人開発をするときに使われることの多いHerokuはPostgreSQLが使われている.
  • データベースをDocker上で作成することで, デザイナーなど非エンジニアが環境構築をする際の手間が軽減される.
  • Railsをローカルで作成する理由は, bundlerなどバージョン管理ツールが用意されている, またDocker上ではデバッグがしづらくなるため.

環境

rbenv 1.1.2

Bundler 2.0.2

node.js v12.10.0

yarn 1.17.3

postgresql 11.5

Docker 19.03.2

Rails 6.0.0

前提

以下のコマンドがコマンドラインで実行できる.
$ rbenv -v

$ node -v

$ yarn -v

$ psql --version

$ bundle -v

$ docker -v

$ docker-compose -v

手順

Bundlerを初期化してRails newするところまで

作業ディレクトリの作成
$ mkdir [project-name]
$ cd [project-name]
Bundlerの初期化
$ bundle init

生成されたGemfileのコメントアウトを外す.

Gemfile
# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

# gem "rails"    ←この行のコメントを外す

bundle installする.

$ bundle exec rails -v
$ bundle --path vendor/bundle -j4
$ bundle exec rails new . -d postgresql

最後のコマンドを実行した際に「conflict Gemfile」みたいなのが出て聞かれたら「Y」を選択する.
rails newする時のオプション, bundleのコマンドについては下記のQiita記事が参考になりました.

薄いRailsプロジェクトを rails new する
bundler、bundle execについて ※自分用メモ

Dockerの設定ファイルを記入し, Dockerイメージを作成する

[project-name]/docker-compose.ymlを作成し, 以下のように記入.

docker-compose.yml
version: '3.7'
services:
  postgres:
    image: postgres
    restart: always
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: root
    hostname: postgres
    ports:
      - 5432:5432
    volumes:
      - ./data/postgres:/var/lib/postgresql/data

先ほど記入した設定ファイルからDockerイメージをビルドする.

$ docker-compose build

PostgreSQLを起動する.

$docker-compose up -d

終了するとき.

$ docker-compose down

Docker上のPostgreSQLにRailsから接続するための設定をする.

config/database.yml
development:
  <<: *default
  host: localhost    ←追加
  database: [proj_name]_development
  username: root    ←追加
  password: root    ←追加
 ・
 ・
 ・
test:
  <<: *default
  host: localhost    ←追加
  database: [proj_name]_test
  username: root    ←追加
  password: root    ←追加

データベースを作成する.

$ bin/rails db:create

Railsのローカルサーバーを立ち上げる.

$ bin/rails db:migrate

完成!!

うごいたーー :raised_hands::raised_hands::raised_hands:
screenshot01.png

終わりに

Dockerの設定ファイルの部分など自分のなかでおまじない状態になっている部分があるので, それらの説明ができるように勉強していきたいと思います.オススメの本や記事などあれば教えてください.

6
4
2

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
4