【Ruby on Rails 7】Dockerで環境構築してみたい

PostgreSQL

はじめに

今回は、rails7の環境構築をしていきます。

Railsの環境構築は、バージョン差異で詰まりがちなので、Dockerを使用していきます。

流れ

  1. プロジェクトフォルダを作成して必要なファイルを配置
  2. Railsアプリの雛形を作成
  3. database設定の変更
  4. サーバーの起動

事前準備

予めDockerを実行できる環境を用意する必要があります。

以下のような実行環境になるアプリケーションをダウンロードしておきましょう。

コンテナ実行アプリケーションは非常にメモリを消費します。OrbStackが比較的軽量なためこちらを使用していきます。

% brew install --cask orbstack

※Windowsの場合は、公式ページからダウンロードしてからインストールします。

1.プロジェクトフォルダを作成して必要なファイルを配置

以下のコマンドで、プロジェクトフォルダを作成して必要なファイルを配置します。

% mkdir myapp && cd myapp
% touch docker-compose.yml Dockerfile Gemfile Gemfile.lock

以下のファイルは下記のように記述します。

Dockerfile

FROM ruby:3.1.6
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

docker-compose.yml

version: '3'
services:
  db:
    image: postgres
    environment:    
      - POSTGRES_PASSWORD=password
      - POSTGRES_HOST_AUTH_METHOD=trust
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

Gemfile

source '<https://rubygems.org>'
gem "rails", "~> 7.0.0", ">= 7.0.0.0"

2.Railsアプリの雛形を作成

以下のコマンドでRailsの雛形を作成して、起動したコンテナを確認します。

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

プロジェクトフォルダを配下に雛形のファイルが作成されてコンテナが起動しました。

Gemfileが更新されているのでビルドします。

% docker-compose build

3.database設定の変更

databaseに関する設定を以下の通り変更します。

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

production:
  <<: *default
  database: myapp_production
  username: myapp_1
  password: <%= ENV["MYAPP_DATABASE_PASSWORD"] %>

以下のコマンドでDBを作成します。

% docker-compose run web rake db:create
[+] Running 1/0
 ⠿ Container myapp-db-1  Running                                                                                                0.0s
Created database 'myapp_development'
Created database 'myapp_test'

4.サーバーの起動

以下のコマンドでサーバーを起動します。

% docker-compose up

http://0.0.0.0:3000にアクセスして以下の画面が確認できました。

参考

以下の記事が参考になりました。ありがとうございました!

クィックスタート: Compose と Rails — Docker-docs-ja 24.0 ドキュメント
【初学者向け】DockerでRails7の環境構築(2023年版) - Qiita
Dockerの公式ドキュメントでRails7系の環境構築をしたら途中で詰まったので、スムーズに構築していく方法を記します✏️前提条件開発環境M1Mac: Ventura13.0Docker …

コメント

タイトルとURLをコピーしました