😸

SchemaSpyでDocker上のMySQLデータベースの設計書を生成したみた話

2024/06/04に公開

はじめに

受託のとある案件でテーブル構成の見直しとか最適化を行おうと思ったけど、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で簡単に出力できました。これはいろんな案件でも採用してド効率化していきたいと思います。

公式

https://schemaspy.readthedocs.io/en/latest/installation.html

Discussion