【Docker × Rails】rails-erd で ER 図をサクッと作成する方法 📊
背景
プロダクト開発に途中参加した際、ER 図が更新されていない、あるいは存在しないケースがあります。特に Docker 環境では、ローカル開発環境を統一しつつ ER 図を生成することが求められます。
そこで、rails-erd を活用し、Docker プロジェクト内で手軽に ER 図を作成してデータ構造を可視化する方法を紹介します。
Rails ERD とは
rails-erd は、Rails の Active Record モデルを元に ER 図を自動生成する Gem のことです。
Rails ERD is a gem that allows you to easily generate a diagram based on your application's Active Record models.
導入手順
rails-erd
を Gemfile に追加
1. 開発環境のみで使用するため、development
グループに追加します。
group :development do
gem "rails-erd"
end
その後、Docker コンテナ内で bundle install
を実行します。
docker compose run --rm <Container-ID> bundle install
2. Graphviz を Dockerfile に追加
rails-erd
は Graphviz に依存しているため、Docker イメージに Graphviz を追加する必要があります。また、可読性向上のため一部スクリプトは省略します。ご了承ください。
# Install packages needed to build gems
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y \
build-essential \
default-libmysqlclient-dev \
libvips \
pkg-config \
gcc \
graphviz && \ # ← Graphviz を追加
rm -rf /var/lib/apt/lists/*
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y \
curl \
default-mysql-client \
libvips \
graphviz && \ # ← ここでもインストール
rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/*
3. Docker イメージを再ビルド
Dockerfile の変更を反映させるため、docker compose build
を実行します。
docker compose build --no-cache <Container-ID>
その後、コンテナを起動します。
docker compose up -d <Container-ID>
ER 図の生成
コンテナ内で rails-erd
を実行し、ER 図を作成します。
# 1. 基本コマンド
docker compose exec <Container-ID> bundle exec erd
# 2. 上記1 + ファイル名の表示
docker compose exec <Container-ID> bundle exec erd --filename=public/erd
# 3. 上記2 + PK, FK, 継承関係の表示
docker compose exec <Container-ID> bundle exec erd --attributes=primary_keys,foreign_keys,content --inheritance --filename=public/erd
オプションの詳細は 公式ドキュメント を参照してください。
生成された ER 図のサンプル
トラブルシューティング
1. データベースが存在しないエラー
エラーメッセージ:
ActiveRecord::NoDatabaseError: We could not find your database:
解決策:
docker compose exec <Container-ID> bin/rails db:create
docker compose exec <Container-ID> bin/rails db:migrate
2. Graphviz が見つからないエラー
エラーメッセージ:
Failed: RuntimeError: Saving diagram failed!
Verify that Graphviz is installed and in your path.
解決策:
Graphviz のインストール状況を確認します。
docker compose exec <Container-ID> dot -V
docker compose exec <Container-ID> dpkg -l | grep graphviz
Graphviz がインストールされていない場合、Dockerfile に適切に追加されているかを確認し、再ビルドします。
docker compose build --no-cache <Container-ID>
docker compose up -d <Container-ID>
まとめ
-
rails-erd
をGemfile
に追加し、bundle install
。 -
Dockerfile
にgraphviz
を追加し、build・final ステージの両方にインストール。 -
docker compose build
を実行し、変更を反映。 -
docker compose exec <Container-ID> bundle exec erd
で ER 図を生成。 - エラーが発生した場合は、データベースの作成・マイグレーション、Graphviz のインストール状況を確認。
参考
最後に
ここまで読んでいただきありがとうございました!
今回の記事が良かったと思ったらぜひ「いいね❤️」を押していただけると嬉しいです 🎉
noteでも記事を執筆していますので、ぜひチェックしてみてください。
他にもこのようなことについて記載しているのでお読みいただければ幸いです。
最後までお読みいただき、誠にありがとうございました!
Discussion