From 259bac55fb676bb09df6a8fa200868a2f8f798e9 Mon Sep 17 00:00:00 2001 From: Michael Hohn Date: Thu, 12 Sep 2024 09:46:28 -0700 Subject: [PATCH] Add container mapping diagram --- notes/Makefile | 5 +++++ notes/docker-demo-container-deps.dot | 27 +++++++++++++++++++++++++++ notes/docker-demo-container-deps.pdf | Bin 0 -> 19539 bytes 3 files changed, 32 insertions(+) create mode 100644 notes/Makefile create mode 100644 notes/docker-demo-container-deps.dot create mode 100644 notes/docker-demo-container-deps.pdf diff --git a/notes/Makefile b/notes/Makefile new file mode 100644 index 0000000..8e34947 --- /dev/null +++ b/notes/Makefile @@ -0,0 +1,5 @@ +view: docker-demo-container-deps.pdf + open $< + +docker-demo-container-deps.pdf: docker-demo-container-deps.dot + dot -Tpdf $< > $@ diff --git a/notes/docker-demo-container-deps.dot b/notes/docker-demo-container-deps.dot new file mode 100644 index 0000000..71c3397 --- /dev/null +++ b/notes/docker-demo-container-deps.dot @@ -0,0 +1,27 @@ +digraph docker_compose { + rankdir=LR; + + node [shape=box]; + + mrvadata [label="mrvadata" color=lightblue]; + "client-qldbtools" [label="client-qldbtools" color=lightgreen]; + "client-ghmrva" [label="client-ghmrva" color=lightgreen]; + "code-server" [label="code-server" color=lightgreen]; + rabbitmq [label="rabbitmq" color=lightcoral]; + server [label="server" color=lightcoral]; + dbstore [label="dbstore" color=lightcoral]; + artifactstore [label="artifactstore" color=lightcoral]; + agent [label="agent" color=lightcoral]; + + // Dependencies + "client-qldbtools" -> mrvadata; + "client-ghmrva" -> mrvadata; + "code-server" -> mrvadata; + dbstore -> mrvadata; + "server" -> rabbitmq; + "server" -> dbstore; + "server" -> artifactstore; + agent -> rabbitmq; + agent -> dbstore; + agent -> artifactstore; +} diff --git a/notes/docker-demo-container-deps.pdf b/notes/docker-demo-container-deps.pdf new file mode 100644 index 0000000000000000000000000000000000000000..39b1f1d08e10549cc1b5bbdf7c63849f50f39c55 GIT binary patch literal 19539 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 literal 0 HcmV?d00001