8
8

More than 3 years have passed since last update.

Diagrams on Dockerでシステム構成図を書いてみた

Posted at

Diagramsを使ってPythonでシステム構成図を描く | Developers.IO」の記事をみて良さそうだなーと思ったのだけどPython環境がなかったのでDockerで試してみた話。

Dockerイメージを準備する

公式ドキュメントに「pipdiagramsをインストールせよ、Graphvizもインストールしておけ」と書かれているのでそれにしたがってDockerfileを作成。

Dockerfile
FROM python:latest
WORKDIR /app
RUN apt update && \
    apt install -y python3-pygraphviz && \
    pip install diagrams

ビルドする。あとで実行しやすいようにdiagramsという名前のDockerイメージにしておく。

$ docker build -t diagrams .

これでdiagrams:latestのDockerイメージの作成が完了。

Diagramsのファイルを準備する

公式のQuickstartのファイルを用意してみる。

diagram.py
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("Web Service", show=False):
    ELB("lb") >> EC2("web") >> RDS("userdb")

割と直感的に意味がわかるけど、より詳しくは公式ドキュメントを参照。公式ドキュメント英語だけどシンプルで分量も少ないから読みやすい。あとExamplesがわかりやすい。

Diagramsを実行する

公式ドキュメントによるとローカルにPython環境があれば、$ python diagram.pyで実行できるとのこと。

今回はDockerコンテナを使うので、diagram.pyを作成したカレントディレクトリをボリュームマウントして、python diagram.pyのコマンドを実行すればOKです。

現在カレントディレクトリはこんな感じ。

$ ls
Dockerfile      diagram.py

コンテナを実行する。

$ docker run --rm -v `pwd`:/app diagrams python diagram.py

もう一回lsするとpngファイルが生成されている。

$ ls 
Dockerfile      diagram.py      web_service.png

web_service.pngの中身を確認してみる。

$ open web_service.png

web_service.png
公式のQuick Start通りの結果になりました!

まとめ

Dockerを使って簡単にDiagramsを試すことができました。
Examplesをやってみたり自分で作りたいように構成図を作ってみたりしましたが、「コードで管理できる」「シンプルで見やすい」「Node(アイコンみたいなやつ)も豊富」といいこと尽くしです。
一方で痒いところとしては、複雑になってくると「Nodeの配置そこじゃねぇよ!」ってなったりするし、ClusterをまたぐClusterは書けないみたいなので「異なるAZのインスタンスに同じセキュリティグループを適用」みたいなことは表現しにくいなぁという感じでした。

どちらにせよ、試してみる価値ありかと思います〜。

References

8
8
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
8
8