テキストベースの ER 図作成環境の準備
ER 図をテキストベースで作成する方法を調べていたところ、BurntSushi/erd という Haskell 製のツールがあった。Docker を使ってこのツールの環境を整えたのでやったことをメモしておく。
Dockerfile
以下の Dockerfile を準備した。Docker の環境は整っている前提。
FROM haskell:8
RUN apt-get update && apt-get install -y graphviz
RUN cabal update && cabal install graphviz parsec
RUN git clone https://github.com/BurntSushi/erd.git
WORKDIR /erd
RUN cabal configure
RUN cabal build
RUN cp dist/build/erd/erd /usr/bin
ENTRYPOINT [ "erd" ]
CMD [ "--help" ]
- 最近はあまりアクティブでないプロジェクトなので、README 通りの方法では導入できなかったし、p-r も溜まっている
- Dockerfile を追加する p-r が出ていたのでそちらをベースにした
- CMD でヘルプメッセージを表示
- ENTRYPOINT でコンテナの erd コマンドをホスト側から呼び出せるようにしている
どこかのディレクトリに上記の Docker ファイルを準備して docker run
すればよい。
使い方の例
# 入力ファイルを指定
# `docker run -v` で同期したディレクトリを `erd -i` オプションに渡しているが、他に良い方法はある?
$ docker run --rm -v $(pwd):/tmp erd -i /tmp/sample.er > result.pdf
# 出力フォーマットの変更
$ docker run --rm -v $(pwd):/tmp erd -i /tmp/sample.er -f png > result.png
er ファイルと生成される図の例
# Entities are declared in '[' ... ']'. All attributes after the entity header
# up until the end of the file (or the next entity declaration) correspond
# to this entity.
[Person]
*name
height
weight
+birth_location_id
[Location]
*id
city
state
country
# Each relationship must be between exactly two entities, which need not
# be distinct. Each entity in the relationship has exactly one of four
# possible cardinalities:
#
# Cardinality Syntax
# 0 or 1 0
# exactly 1 1
# 0 or more *
# 1 or more +
Person *--1 Location
このファイルから以下の図を生成できる。
docker run --rm -v $(pwd):/tmp erd -i /tmp/simple.er -f png > erd_sample.png
WEB+DB PRESS Vol.98
posted with amazlet at 18.01.09
丸山 晋平 前佛 雅人 横田 真俊 小原 薫 小笠原 空宙 高橋 征義 牧 大輔 大沢 和宏(Yappo) 久田 真寛 のざき ひろふみ うらがみ 池田 拓司 ひげぽん 遠藤 雅伸 海野 弘成 はまちや2 竹原 日高 正博
技術評論社
売り上げランキング: 39,429
技術評論社
売り上げランキング: 39,429