このツールは接続先のDBを指定する事でそのDBサーバのスキーマ情報を読み取って解析してくれる作りだ。DBに接続させたくない場合は多い。table文などを盛り込んだDDL文の塊を用意する事で対応できるようにした。叩かせるようにしただけ。見えてきた未来DBをダイレクトに繋ぎに行かずにすむ事で、ブランチごとにDB構成を管理することができるようになり、CIに組み込めばスキーマのレビューもしやすくなる。動く前にDBコンテナに適切にデータが作られてないといけない。空振りしてしまい、期待している結果に至らないからだ。それ自体で細かな起動順番を指定することができない。公式ドキュメントでも以下のような記載がある。コンテナの準備が「整う」まで待ちません(つまり、特定のアプリケーションが利用可能になるまで待ちません)。http://docs.docker.jp/compose/startup-order.html自分で制御するしかないようだ。起動したい順番をシーケンス図でかくとこのような感じ。含むDB側の準備は完了とみなし、SchemaSpy側の実際の処理をするようにした。$cmdhttps://github.com/GitSumito/schemaspy-with-sql/blob/master/docker/schemaspy/bin/wait.shMySQLに繋がったらtableも作られていると解釈するのは危険ではないかと感じるかもしれない。コンテナの設定を用いてもう少し説明したい。/docker-entrypoint-initdb.dへマウントするよう設定している。あれば初期化段階で読み込み、MYSQL_DATABASEに指定したデータベースに作られる。connections.になる前に、実行されている。upその後、自分のPCにhttp接続するとSchemaSpyが作ったアウトプットを見ることができる。ER図はこのような感じ。今回はMySQLで公開されているemployeeテーブルから一部情報を使って描写した。https://github.com/datacharmer/test_db/blob/master/employees.sql手取り早く手元のDDLに置き換えたい場合は、schemaspy-with-sql/blob/master/docker/mysql/sql/001-create-tables.sqlファイルの中身を変更してdocker-composeを起動するだけでSchemaSpyを起動させることができるようにしてある。ファイルをそのまま読み込ませることができればもっと便利になると思うので、次回はその対処を行いたいと思う。スタートアップ向けの極力コストを抑えた設計まで提案から運用まで担当することが多い。最近はAWSやContainerを用いたWebサービスの設計から運用。趣味はマラソン、トライアスロン。