1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SchemaSpyでDBドキュメントを自動生成する

Posted at

SchemaSpyとは

SchemaSpyは、データベースのドキュメントをHTML化し、Entity Relationship Diagramを含むドキュメントを作成します。
HTML化されたドキュメントを使用することで、チームやコミュニティと簡単に共有することができます。

SchemaSpy * Database Documentation Built Easy.

設定方法

Javaベースで動いているが、dockerを使用することで楽に環境を用意できる

dockerのmysqlを使用する場合設定が変わるかも

ファイル構成


schemaspy
	 docker-compose.yml
	 docker
	     schemaspy
    		    Dockerfile
			    config
			      schemaspy.properties
			    drivers
					 mysql-connector-java-8.0.16.jar

docker-compose.yml

※commandに-allオブションを付けているので全スキーマ取得します

version: "3.8"

services:
  schemaspy:
    build: ./docker/schemaspy
    image: schemaspy/schemaspy
    volumes:
      - ./docker/schemaspy/output:/output
      - ./docker/schemaspy/drivers:/drivers
      - ./docker/schemaspy/config/schemaspy.properties:/app/schemaspy.properties:ro
    extra_hosts:
      - localhost:192.168.X.X # localhostと自身のpcのipアドレスを紐付け
    container_name: "schemaspy"
    command: "java -jar schemaspy.jar -configFile /app/schemaspy.properties -debug -all"

  nginx_schemaspy:
    image: nginx:1.19.5-alpine
    container_name: "nginx_schemaspy"
    ports:
      - "8080:80"
    volumes:
      - ./docker/schemaspy/output:/usr/share/nginx/html:ro

Dockerfile

FROM openjdk:8u212-jdk-alpine

ENV DRIVER_URL https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jar
ENV APP_URL https://github.com/schemaspy/schemaspy/releases/download/v6.1.0/schemaspy-6.1.0.jar
# 使用中のmysqlのバージョンを記載
ENV MYSQL_VERSION=X.X.XX

WORKDIR /app

RUN apk --update add graphviz ttf-dejavu && \
    apk --update add --virtual .builddep tzdata wget libressl && \
    cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
    wget -O mysql-connector-java.jar ${DRIVER_URL} && \
    wget -O schemaspy.jar ${APP_URL} && \
    apk del .builddep && \
    rm -rf /var/cache/apk/*

AppleシリコンMac上のDockerでSchemaspyを動かす方法

schemaspy.properties

schemaspy.t=mysql
schemaspy.dp=/drivers/mysql-connector-java-8.0.16.jar
schemaspy.host=localhost
schemaspy.port=3306
schemaspy.db=xxxx // ドキュメントを取得したいdb名
schemaspy.u=xxxx // ユーザー名
schemaspy.u=xxxx // パスワード(あるなら)
schemaspy.o=/output

my.cnf

dockerコンテナからホストpcへのアクセスとなるため、mysqlに外部からのアクセスを許可する設定を行う。

※セキュリティ的に良くなさそうなので、ドキュメント生成後はbind-address = 127.0.0.1に変更した方がいいかも

[mysqld]
# Only allow connections from localhost
# bind-address = 127.0.0.1
bind-address = 0.0.0.0

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

ドライバー取得

$ cd ./drivers
$ curl -L https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.16.tar.gz |
    tar xvzf - -C drivers --strip=1 mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar
mysql> GRANT ALL PRIVILEGES ON *.* TO <ユーザー名>@'192.168.%' IDENTIFIED BY '' WITH GRANT OPTION;

192.168から始まるipからのrootユーザーでのアクセスを許可
root@'%'とすると全てのipからのアクセスを許可

mysql> select user, host from mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| <ユーザー名>    | 192.168.% |  <----このユーザーで外部からログインできる
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
4 rows in set (0.00 sec)

$ docker-compose up
ここにログが吐かれます

localhost:8080でアクセスできる

参考

AppleシリコンMac上のDockerでSchemaspyを動かす方法

schemaspyをdocker-composeで動かす - エンジニアの覚え書き

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?