見出し画像

Dockerを使ったRails APIの開発環境の構築手順

※※※注意※※※
この記事はChatGPTにベースを書いてもらっています。

こんにちは、開発者の皆さん!
今回はDockerを使ってRails(APIモード)の開発環境を構築する方法をお伝えします。

1. 必要なソフトウェアのインストール

まずは、DockerとDocker-composeをインストールします。
公式サイトからそれぞれのインストーラをダウンロードしてインストールしましょう。

[追記]
Docker DesktopをインストールでOKです。

2. プロジェクトディレクトリの作成

次に、プロジェクトのディレクトリを作成します。以下のコマンドを実行します。

mkdir myapp && cd myapp

3. Dockerの設定

Dockerfileの作成

次に、以下の内容でDockerfileを作成します。

# ベースとなるDockerイメージ指定
FROM ruby:2.7.2
# 必要なパッケージのインストール
RUN apt-get update -qq && apt-get install -y nodejs postgresql-client
# ワーキングディレクトリの作成
RUN mkdir /myapp
WORKDIR /myapp
# ホストのGemfileとGemfile.lockをコピー
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
# bundlerのインストールとbundle installの実行
RUN gem install bundler
RUN bundle config set force_ruby_platform true
RUN bundle install

docker-compose.ymlの作成

次に、以下の内容でdocker-compose.ymlを作成します。

version: '3'
services:
  db:
    image: postgres
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: postgres
  web:
    build: .
    command: bash -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のサーバーを3000ポートで起動し、データベースにはPostgresを使用する設定になります。

Gemfileの作成

次に、Gemfileを作成します。
Gemfileとは、Railsで必要なgemライブラリをまとめたファイルのことです。

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

Gemfile.logの作成

次に、Gemfile.lockを作成します。
Gemfile.lockは、Gemfileを元にインストールされたgemライブラリの情報が記載されたファイルです。

touch Gemfile.lock

4. Rails APIの作成

Dockerを使ってRails APIを作成します。以下のコマンドを実行します。

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

5. データベースの設定

Railsのデータベース設定を行います。config/database.ymlを以下のように修正します。

default: &default
  adapter: postgresql
  encoding: unicode
  host: db
  username: postgres
  password: postgres
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: myapp_development

test:
  <<: *default
  database: myapp_test

次に、データベースを作成します。

docker-compose run --rm web bash -c 'bundle exec rails db:create && \
bundle exec rails db:migrate'

6. コンテナのビルドと起動

最後に、コンテナをビルドし、起動します。

docker-compose build
docker-compose up

[追記]
起動後に下記URLが開ければ成功です。
http://0.0.0.0:3000/

以上で、Dockerを使ったRails APIの開発環境の構築が完了しました。
この環境を使えば、どのマシンでも同じ条件で開発を進めることができます。
今後も効率的な開発を進めていきましょう!

あとがき

開発部内でフロントとバックを分けて開発したいね、と話をしていたので、その事前勉強という意味合いでRailsを使ったAPIの開発環境を構築してみました。
まだ中身は空っぽなので、次回以降肉付けしていきたいです。

にしても、今日のChatGPTは元気いっぱいでしたね。かわいい。

では、お疲れ様でした!