こんにちは。仁科(@nishina555)です。
先日、MacでER図をテキストベースで書きたいと思いerd
というツールをインストールしました。
しかし、ローカルにインストールするのが少々面倒だったのでDocker化しました。
Dockerfileの作成手順について興味があるかたは以下の記事も参考にしてみてください。
また、ローカルで簡単に画像ファイルを作成できるようにラッパースクリプトも併せて作成したので、今回使いかたを共有したいと思います。
erdの利用方法について
本家はこちらになります。
例えば、以下のようなsimple.er
というファイルを準備します。
[Person]
*name
height
weight
+birth_location_id
[Location]
*id
city
state
country
Person *--1 Location
次のようなコマンドを実行します。
$ stack exec erd -- -i simple.er -o simple.png
すると次のような画像が作成されます。
erdをDocker化
erd
を実行できる環境をDocker化しました。
Dockerfileをビルドし、ビルドしたイメージからコンテナを作成することでDocker上でerd
を実行できます。
イメージのビルドからローカルに画像ファイルをコピーする手順は以下のようになります。
$ git clone https://github.com/nishina555/erd.git
$ cd erd
$ docker build . -t erd
$ docker run -it --name erd_container erd /bin/bash
[root@5c54b1666c3a /]# cd erd
[root@5c54b1666c3a erd]# stack exec erd -- -i examples/simple.er -o simple.png
# コンテナからログアウト
$ docker cp erd_container:/erd/simple.png simple.png
実行コマンドのラッパースクリプト
上記のコマンドをみてわかるように、Dockerにログインしたり、画像ファイルをローカルにコピーしたり色々と面倒です。
なので、実行コマンドのラッパースクリプト(generate.sh
)を作成しました。
以下のようにすればローカルのer
ファイルから画像ファイルを作成できます。(er
ファイルはあらかじめ作成する必要があります。)
$ docker build . -t erd
$ ./generate.sh simple.er simple.png
簡単にgenerate.sh
がやっていることを説明すると以下のようになります。
- erdというイメージからコンテナを作成する
- ローカルのerファイルをコンテナにコピーする
- コンテナ上でerファイルから画像ファイルに変換する
- コンテナ上の画像ファイルをローカルにコピーする
- コンテナを破棄する
最後に
今回のDockerfileは本家をForkしたこちらに置いてあります。