こんにちは。よっしーです(^^)
今日は、docker で環境構築した CodeIgniter に schemaspy を追加する方法についてご紹介します。
前提条件
この記事では、Dockerでの環境構築が完了していることを前提にしています。環境構築の方法については、下記の記事を参考にお願いします。
修正内容
ディレクトリ構成
下記のファイルを新規作成&修正します。
app
├── docker-compose.yml (修正)
├── schemaspy (新規)
│ ├── Dockerfile
│ ├── local.properties
│ └── output
docker-compose.yml
15 – 27 行目に下記の内容を追加します。
x-schemaspy-cmd: &schemaspy-cmd
build: ./schemaspy
volumes:
- ./schemaspy/local.properties:/schemaspy.properties
- ./schemaspy/output:/output
environment:
SCHEMASPY_OUTPUT: /output
depends_on:
- mysql
profiles:
- schemaspy
networks:
- net
93 – 94 行目に下記の内容を追加します。
schemaspy-cmd:
<<: *schemaspy-cmd
schemaspy/Dockerfile
下記の内容で新規作成します。
FROM schemaspy/schemaspy
schemaspy/local.properties
下記の内容で新規作成します。
# type of database. Run with -dbhelp for details
# if mssql doesn't work: try mssql08 in combination with sqljdbc_7.2, this combination has been tested
schemaspy.t=mysql
# optional path to alternative jdbc drivers.
schemaspy.dp=/drivers
# database properties: host, port number, name user, password
schemaspy.host=mysql
schemaspy.port=3306
schemaspy.db=sample
schemaspy.u=root
schemaspy.p=P@ssw0rd
# output dir to save generated files
schemaspy.o=output
# db scheme for which generate diagrams
schemaspy.s=sample
ビルド&起動
下記の手順でビルドして、起動させます。起動後に、テスト用のテーブルとデータを登録しています。
docker compose build
docker compose up -d
docker compose run --rm flyway-cmd info
docker compose run --rm flyway-cmd baseline
docker compose run --rm flyway-cmd migrate
schemaspyでDB関係のドキュメント作成
下記の手順でDB関連のドキュメントを作成します。
docker compose run --rm schemaspy-cmd
下記のパスにファイルが作成されていれば成功です。ブラウザで該当ファイルを開くと、DB関連の情報がみれます。
schemaspy/output/index.html
output配下のファイルをwebサーバに配置して、ネットワーク経由で参照できるようにするとチーム間での共有がスムーズにいくかも知れません。devやstag、prodなど環境に合わせて作成してあげるとよさそうです。ただ、ネットワーク越しに参照できるので、セキュリティには気をつけて構築する必要があります。
解説
schemaspyとは
SchemaSpyは、データベースのスキーマを解析するためのJavaツールで、以下のような機能があります。
- スキーマの可視化
SchemaSpyは、データベースのスキーマを解析し、HTMLやPDFなどのドキュメントを生成します。これにより、スキーマを可視化することができ、データベースの構造や関係を理解するのに役立ちます。生成されたドキュメントには、データベースの依存関係、テーブル、列、インデックス、ビュー、ストアドプロシージャなどのオブジェクトが含まれます。
- 多様なデータベースのサポート
SchemaSpyは、多様なデータベースをサポートしています。以下のようなデータベースが対象となっています。
- Oracle
- MySQL
- PostgreSQL
- Microsoft SQL Server
- SQLite
- Sybase
- DB2
- Informix
- Firebird
- HSQLDB
- H2
- Derby
- カスタマイズ可能な出力
SchemaSpyは、生成されるドキュメントの出力をカスタマイズすることができます。たとえば、出力形式をHTMLからPDFに変更したり、テンプレートをカスタマイズしたりすることができます。
- コマンドラインからの実行
SchemaSpyは、コマンドラインから実行することができます。これにより、自動化されたタスクやバッチ処理に適したツールとなっています。
以上がSchemaSpyの主な機能です。データベースのスキーマを解析する際には、SchemaSpyを活用することで、データベースの設計やメンテナンスを効率化することができます。
おわりに
今日は、docker で環境構築した CodeIgniter に schemaspyを追加する方法についてご紹介しました。これで、DBの可視化が可能になりましたので、DBの構造がどうなっているのかを確認しやすくなったと思います。
dockerのイメージが大きくなっているので、どこかで小さくしたいと思います。
なお、ここに記載のDocker関連のファイルは、下記のGitHubにあります。
また明日お会いしましょう!
コメント