Help us understand the problem. What is going on with this article?

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

はじめに

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away