🐰
【RubyonRails】Dockerを利用してRails7+PostgreSQLの開発環境を構築する方法
はじめに
Dockerを利用してRails7とPostgreSQLの開発環境を構築するまでのチュートリアルを提供します。
具体的には、以下のような内容で進めます。
- 技術構成
- 必要なファイルの準備
- Railsアプリケーションの作成
- データベース設定の更新
- コンテナの起動
- データベースの作成
- Railsアプリケーションの確認
1. 技術構成
カテゴリ | 技術 |
---|---|
フロントエンド | JavaScript/Sprockets-Rails/Importmap-Rails/Turbo-Rails/Stimulus-Rails |
バックエンド | Ruby 3.1.6/Rails 7.0.8.4 |
データベース | PostgreSQL 14.12 |
環境構築 | Docker/docker-compose |
2. 必要なファイルの準備
以下のディレクトリ構成とファイルを作成します。
myapp/
├── Dockerfile
├── docker-compose.yml
├── Gemfile
├── Gemfile.lock
└── entrypoint.sh
Gemfile
Railsと必要なgemを指定します。
source 'https://rubygems.org'
gem 'rails', '~>7.0.6'
Dockerfile
Railsアプリケーション用のDockerイメージを作成します。
FROM ruby:3.1
# 必要なパッケージをインストール
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
# アプリケーションディレクトリを作成
WORKDIR /myapp
# GemfileとGemfile.lockをコピー
COPY Gemfile /myapp/Gemfile
COPY Gemfile.lock /myapp/Gemfile.lock
# gemをインストール
RUN bundle install
# アプリケーションのソースコードをコピー
COPY . /myapp
# エントリポイントスクリプトをコピーして実行権限を付与
COPY entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
# ポート3000を公開
EXPOSE 3000
# デフォルトコマンド
CMD ["rails", "server", "-b", "0.0.0.0"]
docker-compose.yml
複数のコンテナを定義し、連携させます。
services:
db:
image: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
volumes:
- postgres_volume:/var/lib/postgresql/data
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
volumes:
postgres_volume:
entrypoint.sh
コンテナ起動時に実行されるスクリプトを作成します。
#!/bin/bash
set -e
# サーバPIDファイルを削除
rm -f /myapp/tmp/pids/server.pid
# コンテナのメインプロセスを実行
exec "$@"
3. Railsアプリケーションの作成
Docker Composeを使ってRailsアプリケーションを作成します。
webサービスのコンテナを起動し、rails newコマンド
を実行します。
docker-compose run web rails new . --force --database=postgresql
4. データベース設定の更新
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
5. コンテナの起動
以下コマンドを実行し、コンテナを起動します。
docker-compose build
docker-compose up
6. データベースの作成
新しくターミナルを開き、以下コマンドを実行し、データベースを作成します。
docker-compose exec web rails db:create
7. Railsアプリケーションの確認
最後に、ブラウザでhttp://localhost:3000
にアクセスし、Railsのウェルカムページが表示されれば成功です。
最後に
以上が、Dockerを利用してRails7とPostgreSQLの開発環境を構築するまでのチュートリアルです。
ここからwebアプリケーションの作成を進めていきます。
Discussion