Zenn
🐳

【Docker × Rails】rails-erd で ER 図をサクッと作成する方法 📊

2025/02/12に公開
1

背景

プロダクト開発に途中参加した際、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.

導入手順

1. rails-erd を Gemfile に追加

開発環境のみで使用するため、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>

まとめ

  1. rails-erdGemfile に追加し、bundle install
  2. Dockerfilegraphviz を追加し、build・final ステージの両方にインストール。
  3. docker compose build を実行し、変更を反映。
  4. docker compose exec <Container-ID> bundle exec erd で ER 図を生成。
  5. エラーが発生した場合は、データベースの作成・マイグレーション、Graphviz のインストール状況を確認。

参考

https://zenn.dev/tochisuke/articles/240ab7ae11b0cf

最後に

ここまで読んでいただきありがとうございました!
今回の記事が良かったと思ったらぜひ「いいね❤️」を押していただけると嬉しいです 🎉

noteでも記事を執筆していますので、ぜひチェックしてみてください。
https://note.com/take_lifelog/n/n4889330fa6da

他にもこのようなことについて記載しているのでお読みいただければ幸いです。

https://zenn.dev/take_tech/articles/275e5f4242973d

最後までお読みいただき、誠にありがとうございました!

1

Discussion

ログインするとコメントできます