【Rails】DockerでRails+PostgreSQLの環境を構築してみる

~簡単な自己紹介~

  • 嫁と猫3匹と暮らすフルリモートの三十路SE
  • ブリッジSE的なポジションを務めることが多く、チーム運営、顧客折衝、ベンダーコントロールが得意
  • 投資・節約・副業で資産形成中
  • 現在の金融資産は約1,650万円、めざせアッパーマス層(資産3,000万円)

業務でRailsを使うことがあったので、学習用に開発環境を構築してみました。

そのときの作業メモ&手順をまとめました。

基本的に下記のQiitaの記事を参考にしています。

【初学者向け】DockerでRails7の環境構築(2023年版) – Qiita

当記事はRailsが動く環境を作ることが目的の記事になります。

そのため、DockerファイルやYAMLファイルなどの設定値の解説は省略し、手順の一部簡略化を行っています。

開発環境

  • OS:Windows11
  • Docker Desktopインストール済み
  • VSCodeインストール済み

事前準備

プロジェクトのフォルダを作る

任意の場所にrailsフォルダを作ります。

CUIを開く

プロジェクトフォルダをShiftを押しながら右クリックをして、フォルダをターミナルで開きます。

私はWindows標準のターミナルを使っていますが、CUIであればなんでも大丈夫です。

プロジェクトフォルダをVSCodeで開く

下記のコマンドを実行し、プロジェクトフォルダをVSCodeで開きます。

code .

VSCode上にターミナルを表示する

メニューの表示からターミナルを表示します。

Ctrl + @がショートカットキーになるので覚えておくと便利です。

Dockerファイルを作成する

下記のコマンドを実行し、Dockerファイルを作成します。

エラーメッセージが表示されますが、Dockerファイルが作成されていれば問題ありません。

type nul > Dockerfile

下記の内容でDockerファイルを編集します。

FROM ruby:3.0.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp

Gemfileを作成する

下記のコマンドを実行し、Gemfileを作成します。

エラーメッセージが表示されますが、Gemfileが作成されていれば問題ありません。

type nul > Gemfile

下記の内容でGemfileを編集します。

source 'https://rubygems.org'
gem 'rails'

Gemfile.lockを作成する

下記のコマンドを実行し、Gemfile.lockを作成します。

エラーメッセージが表示されますが、Gemfile.lockが作成されていれば問題ありません。

このファイルは編集不要です。

type nul > Gemfile.lock

YAMLファイルを作成する

下記のコマンドを実行し、YAMLファイルを作成します。

エラーメッセージが表示されますが、YAMLが作成されていれば問題ありません。

type nul > docker-compose.yml

下記の内容でYAMLファイルを編集します。

version: '3'
services:
  db:
    image: postgres
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
    ports:
      - "5432:5432"
  web:
    build: .
    command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

Railsプロジェクトを作成する

下記のコマンドを実行して、Railsプロジェクトを作成します。

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

成功すると、Rails関連のフォルダ・ファイルが生成されます。

また、Gemfileが書き変わりますので、下記のコマンドを実行します。

docker compose build

エラーなく終了すればOKです。

DBを作成する

config/database.ymlを編集する

下記の内容でconfig/database.ymlを編集します。

default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: password
  pool: 5

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test

DBを作成する

下記のコマンドを実行して、DBを作成します。

docker compose run web rake db:create

myapp_developmentmyapp_testCreatedになればOKです。

コンテナを起動する

下記のコマンドを実行して、コンテナを起動します。

docker compose up -d

Dockerの画面で成功しているかどうかを確認します。

成功していると、dbコンテナwebコンテナRunningになっています。

環境が構築できたか確認する

Railsのウェルカムページにアクセスする

下記のURLを開きます。

http://localhost:3000/

問題なく表示されれば、RailsPostgreSQLのインストールが無事完了しています。

以上になります。

お疲れさまでした。

Follow me!

【Rails】DockerでRails+PostgreSQLの環境を構築してみる” に対して1件のコメントがあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Ruby

前の記事

【Ruby】配列の使い方まとめ
GitHub

次の記事

【GitHub】コマンド集