0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第1章:Rails API + Docker + PostgreSQL の環境構築

Posted at

Ruby on Railsを用いたバックエンドAPI開発の学習記録です。
普段はJavaを使ってきましたが、今回初めてRailsに触れることになりました。
まだ勉強中の身ですが、本番環境に近い構成を目指して、DockerやPostgreSQLなどと組み合わせながら一から構築していきます。
拙い点もあるかと思いますが、温かく見守っていただければ幸いです。

本シリーズの目標

1.Rails(APIモード)での開発環境構築(Docker + PostgreSQL)

2.Devise & Token認証の導入

3.Concernによるロジック分離

4.RSpec + FactoryBotでのテスト環境

5.RESTfulなAPI構成の実践

:point_up: 開発環境

項目 内容
OS Windows + WSL2 (Ubuntu)
開発言語 Ruby 3.2.2
フレームワーク Ruby on Rails 7.x(API モード)
DB PostgreSQL
コンテナ Docker / docker-compose
エディタ VSCode

Step 0: VSCode × Ubuntu(WSL2)を立ち上げる

  1. Windowsで VSCode を起動
  2. 左下SERACH → Ubuntu を選択
     (またはコマンドパレットから WSL: New Window を選んで Ubuntu)
  3. Ubuntuターミナルが開いたら、開発用ディレクトリを作成・移動:
mkdir ~/rails_projects
cd ~/rails_projects
  1. code . を実行し、VSCodeでこのフォルダを開く:
code .

Step 1: Rails新規APIプロジェクトの作成

rails new blog_api --api -T -d postgresql
cd blog_api
  • --api: API専用モードで生成(ビューやアセット不要)
  • -T: Minitestをスキップ(RSpecを後で使う)
  • -d postgresql: PostgreSQLを使用

image.png
もしこのエラーが出たら
image.png

これは PostgreSQL の C ライブラリが不足している場合に発生します。


解決手順(Ubuntu / WSL2の場合)

以下のコマンドを実行して、必要な開発パッケージをインストールします:

sudo apt update
sudo apt install -y libpq-dev build-essential

Bundlerの再構成と再インストール

プロジェクトディレクトリ内で以下のコマンドを実行:

bundle config set --local path 'vendor/bundle'
bundle install

Step 2: Dockerファイル群の準備

このステップでは、RailsアプリをDockerで起動するために必要なファイルを手動で作成していきます。
現在のディレクトリは以下になっているはずです:

cd ~/rails_projects/blog_api

2-1. Dockerfile の作成

1.VSCodeの左ペインで「新しいファイル」をクリック

2.ファイル名に Dockerfile(拡張子なし)と入力して作成

以下を貼り付けます:

FROM ruby:3.2.2

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

WORKDIR /app

COPY Gemfile Gemfile.lock ./
RUN bundle install

COPY . .

COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]

CMD ["rails", "server", "-b", "0.0.0.0"]

Dockerfile
コピーする
編集する

2-2. docker-compose.yml の作成

1.同じディレクトリに docker-compose.yml を新規作成

2.以下を貼り付け

version: '3.9'
services:
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: password
    volumes:
      - db-data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

  web:
    build: .
    command: rails s -b 0.0.0.0
    volumes:
      - .:/app
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://postgres:password@db:5432/postgres
    depends_on:
      - db

volumes:
  db-data:

2-3. entrypoint.sh(起動スクリプト)の作成

1.同じディレクトリに entrypoint.sh を作成
2.内容:

#!/bin/bash
set -e
bundle exec rails db:prepare
exec "$@"

作成後、実行権限を付与します:

chmod +x entrypoint.sh

なぜ必要?
Dockerで起動する際に、自動でrails db:createやrails db:migrateなどを実行できるようにするためのスクリプトです。

2-4. config/database.yml を編集

既存ファイル config/database.yml を以下のように書き換えます:

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

development:
  <<: *default
  database: blog_api_development

test:
  <<: *default
  database: blog_api_test

Step 3: Docker起動とRails確認

以下のコマンドで Docker 環境を構築・起動します:

docker-compose build
docker-compose up

🔸 初回だけ以下を実行してDB作成:

docker-compose run web rails db:create

Step 4: 動作確認

http://localhost:3000

image.png

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?