😸
SchemaSpyでDocker上のMySQLデータベースの設計書を生成したみた話
はじめに
受託のとある案件でテーブル構成の見直しとか最適化を行おうと思ったけど、DB設計書がなく直接MySQL Workbenchとかでテーブルを確認していたけど、そもそもDB設計書がなかったのでSchemaSpyfでDockerで出力するようにしてみました。
環境
- MacBook Pro M3
- Docker
- schemaspy-6.1.0
フォルダ構成例
Project root
|-docker
| |-nginx
| |-php
| |-redis
| |-mysql
| | |-DockerFile
| |-schemaspy
| |-DockerFile
| |-schemaspy.properties
|-docker-compose.yml
docker-compose
mysql:
build: ./docker/mysql
volumes:
- ./docker/mysql/db-data/:/var/lib/mysql/
- ./docker/mysql/init/:/docker-entrypoint-initdb.d/
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: xxxxx
DB_SOCKET: /var/run/mysqld/mysqld.sock
schemaspy:
build: ./docker/schemaspy
depends_on:
- mysql
volumes:
- ./documents/schemaspy:/documents/schemaspy
SchemaSpy Dockerfile
# SchemaSpy Dockerfile
FROM openjdk:11-jre-slim
# Install required tools
RUN apt-get update && apt-get install -y wget graphviz && apt-get clean
# Download SchemaSpy
RUN wget https://github.com/schemaspy/schemaspy/releases/download/v6.1.0/schemaspy-6.1.0.jar -O /schemaspy.jar
# Download MySQL connector
RUN wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz \
&& tar -xzf mysql-connector-java-8.0.23.tar.gz \
&& mv mysql-connector-java-8.0.23/mysql-connector-java-8.0.23.jar /mysql-connector-java.jar \
&& rm -rf mysql-connector-java-8.0.23 mysql-connector-java-8.0.23.tar.gz
# Copy SchemaSpy properties file
COPY schemaspy.properties /schemaspy.properties
# Run SchemaSpy
ENTRYPOINT ["java", "-jar", "/schemaspy.jar", "-configFile", "/schemaspy.properties"]
schemaspy.properties
# type of database. Run with -dbhelp for details
schemaspy.t=mysql
# optional path to alternative jdbc drivers.
schemaspy.dp=/mysql-connector-java.jar
# database properties: host, port number, name user, password
schemaspy.host=mysql
schemaspy.port=3306
schemaspy.db=xxxxx
schemaspy.u=root
schemaspy.p=root
# output dir to save generated files
schemaspy.o=/documents/schemaspy
# db scheme for which generate diagrams
schemaspy.s=xxxxx
schemaspy.norows=true
schemaspy.nopages=true
schemaspy.noindexes=true
schemaspy.notypes=true
実行
docker-compose up --build
dockerコマンドを実行すると、schemaspyが起動して、schemaspy.oで指定したoputput先に
HTMLが出力される。そこからテーブル一覧、テーブルで主キーやインデックスも確認できたり、E-R図なども確認できる
感想
dockerで簡単に出力できました。これはいろんな案件でも採用してド効率化していきたいと思います。
公式
Discussion