document
docker
Database

dockerを使って簡単にER図を作ってみる

SchemaSpyをdocker内で使ってER図を作る

SchemaSpyとは

https://github.com/schemaspy/schemaspy

SchemaSpyとは、現在のSchemaを元にER図を作るライブラリです。
現在の最新バージョンは6.0.0 RC2です。

公式ドキュメントは以下にあります。
http://schemaspy.readthedocs.io/en/latest/

docker内で使ってみる

SchemaSpyではJavaとGraphvizに依存していますので、ローカル環境にインストールする必要があるのですが、こういう場合は最近ではdockerコンテナ内で構築してしまうようにしています。
docker内に環境をまとめることで、どのマシンでもローカルの環境に依存することなく独立して構築することができるので他人に渡すときにもとても楽になります。

Dockerfileのリポジトリは以下に公開しています。
https://github.com/cimadai/schemaspy

また、Docker HubでAutomation buildを設定していますので、以下のリポジトリからpullすることができます。
https://hub.docker.com/r/cimadai/schemaspy/

使い方

データベース名がpostgres、ユーザー名がpostgres、パスワードは空、というデータベースの場合、以下のコマンドでER図を生成できます。

docker run --rm -it -e DB_HOST=<YOUR_DB_HOST> \
  -v /path/to/output:/output cimadai/schemaspy

上記を実行すると、/path/to/output 内に「postgres」というディレクトリが生成されており、その中にindex.htmlが生成されています。

下図のようなリレーション図などが自動生成されています。便利ですね。
image.png

他にも生成されるものはありますので、公式サンプルを参照してください。
http://schemaspy.org/sample/index.html

別のデータベースを参照したい

環境変数名 初期値 概要
JDBC_DRIVER_PATH postgresql-42.2.1.jar 対象とするDBに接続するためのjdbcライブラリ
DATABASE_TYPE pgsql 何のDBを参照するか。ora (Oracle)やmysql (MySQL)、db2などがあります。
DB_HOST localhost 対象DBのホスト名(or IP Address)
DB_NAME postgres 対象DB名
DB_USER postgres 対象DBのユーザー名
DB_PASS (empty) 対象DBのパスワード

参考にした記事

https://qiita.com/genzouw/items/23cd0119715403e6e110