Docker上でSchemaSpy を実行してER図を生成する

database-schema-1895779_1280

SchemaSpyとは

稼働しているデータベースからテーブル一覧やテーブル詳細、ER図 などのドキュメントをリバースで生成し、HTMLとして出力してくれるツール

利用する目的

ER図がメンテされていないプロジェクトにおいて現状のテーブル構成を把握する際に利用したい。

今回作成したもの

https://github.com/isystk/docker-schemaspy.git

ディレクトリ構成

.
├── docker
│   ├── apache (Webサーバー)
│   │   ├── conf.d (apacheの設定ファイル)
│   │   └── logs (apacheのログ)
│   ├── mysql (DBサーバー)
│   │   ├── conf.d (mysqlの設定ファイル)
│   │   ├── data (mysqlのデータファイル)
│   │   ├── init (mysqlの初期DDL)
│   │   ├── logs (mysqlのログ)
│   │   └── script (mysql関連のスクリプト)
│   ├── schemaspy
│   │   └── conf/schemaspy.properties
│   ├── .env
│   └── docker-compose.yml
├── public (ER図が出力されるディレクトリ)
└── dc.sh (Dockerの起動用スクリプト)

使い方

ダウンロード

Githubからソースファイルをcloneして取得します。

git clone https://github.com/isystk/docker-schemaspy.git

DockerでApacheとMysqlを起動します。

docker/mysql/init のディレクトリにMysqlへインポートしたいデータベースのDumpファイルを配置して下さい。Dockerイメージが作成される際にここに配置したDDLがインポートされます。

mysqldump -u root -p -A > ./dump.sql

Dumpファイルの出力例

docker/schemaspy/conf/schemaspy.properties ファイルには、データベースの接続先情報が記述されています。接続するデータベース名やパスワードなどの情報を設定して下さい。

# type of database. Run with -dbhelp for details
schemaspy.t=mysql
# optional path to alternative jdbc drivers.
schemaspy.dp=/app/mysql-connector-java.jar
# database properties: host, port number, name user, password
schemaspy.host=mysql
schemaspy.port=3306
schemaspy.db=<データベース名>
schemaspy.u=<ユーザー名>
schemaspy.p=<パスワード>
# output dir to save generated files
schemaspy.o=/var/www/html
# db scheme for which generate diagrams
schemaspy.s=work

以下のコマンドを実行するとApacheとMysqlのDockerイメージが作成されて起動します。初回のみデータベースが起動するまで少し時間がかかるので起動が完了してからSchemaspyを実行して下さい。

./dc.sh start

SchemaSpyを実行してMysqlに接続しER図を出力します。

./dc.sh schemaspy

ブラウザでSchemaSpyが出力したER図にアクセスしてみる

http://localhost/

使ってみた感想

通常の開発フローだとER図でテーブル設計をしてからDDLを生成して、データベースに反映するという流れになると思いますが、「テーブル設計をする」という意味では使いづらいなぁと感じました。ER図がメンテされていないようなプロジェクトで現状のテーブル構成を参照したいって時には使えると思います。

コメントを残す

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。