@startdot digraph DockerDeps { //rankdir=BT; rankdir=TD; node [shape=cylinder, style="rounded,filled", color=black, fillcolor=royalblue]; DISTRO_IMG [label=":latest"]; PKG [label="Build packages\ne.g. cmake, g++", shape=box3d]; PYPKG [label="Python packages\ne.g. python-dev", shape=box3d, fillcolor=gold]; JAVAPKG [label="Java packages\ne.g. openjdk", shape=box3d, fillcolor=crimson]; DOTNETPKG [label=".Net packages\ne.g. dotnet-cli", shape=box3d, fillcolor=forestgreen]; SRC [label="git repo", shape=folder]; SAMPLE [label="sample", shape=folder]; subgraph clusterDockerfile { BASE_IMG [label="ortools/cmake:_base\nbase"]; SWIG_IMG [label="ortools/cmake:_swig\nswig"]; BASE_IMG -> SWIG_IMG; color=royalblue; label = "docker//Dockerfile"; } DISTRO_IMG -> BASE_IMG; PKG -> BASE_IMG [label="install", style="dashed"]; // LANG subgraph clusterLang { LANGENV_IMG [label="ortools/cmake:__env\nenv"]; LANGDEVEL_IMG [label="ortools/cmake:__devel\ndevel"]; LANGBUILD_IMG [label="ortools/cmake:__build\nbuild"]; LANGTEST_IMG [label="ortools/cmake:__test\ntest"]; LANGINSTALLENV_IMG [label="ortools/cmake:__install_env\ninstall_env"]; LANGINSTALLDEVEL_IMG [label="ortools/cmake:__install_devel\ninstall_devel"]; LANGINSTALLBUILD_IMG [label="ortools/cmake:__install_build\ninstall_build"]; LANGINSTALLTEST_IMG [label="ortools/cmake:__install_test\ninstall_test"]; LANGENV_IMG -> LANGDEVEL_IMG; LANGDEVEL_IMG -> LANGBUILD_IMG; LANGBUILD_IMG -> LANGTEST_IMG; LANGBUILD_IMG -> LANGINSTALLENV_IMG [label="copy install", style="dashed"]; LANGENV_IMG -> LANGINSTALLENV_IMG; LANGINSTALLENV_IMG -> LANGINSTALLDEVEL_IMG; LANGINSTALLDEVEL_IMG -> LANGINSTALLBUILD_IMG; LANGINSTALLBUILD_IMG -> LANGINSTALLTEST_IMG; color=royalblue; label = "docker//.Dockerfile"; } SWIG_IMG -> LANGENV_IMG; PYPKG -> LANGENV_IMG [label="install", style="dashed"]; JAVAPKG -> LANGENV_IMG [label="install", style="dashed"]; DOTNETPKG -> LANGENV_IMG [label="install", style="dashed"]; SRC -> LANGDEVEL_IMG [label="copy", style="dashed"]; SAMPLE -> LANGINSTALLDEVEL_IMG [label="copy", style="dashed"]; subgraph clusterCache { node [shape=note, style="rounded,filled", color=black, fillcolor=royalblue]; BASE_TAR [label="docker_base.tar"]; SWIG_TAR [label="docker_swig.tar"]; LANGENV_TAR [label="docker__env.tar"]; LANGDEVEL_TAR [label="docker__devel.tar"]; LANGBUILD_TAR [label="docker__build.tar"]; LANGTEST_TAR [label="docker__test.tar"]; LANGINSTALLENV_TAR [label="docker__install_env.tar"]; LANGINSTALLDEVEL_TAR [label="docker__install_devel.tar"]; LANGINSTALLBUILD_TAR [label="docker__install_build.tar"]; LANGINSTALLTEST_TAR [label="docker__install_test.tar"]; edge [color=red]; BASE_IMG -> BASE_TAR [label="make save__base"]; SWIG_IMG -> SWIG_TAR [label="make save__swig"]; LANGENV_IMG -> LANGENV_TAR [label="make save___env"]; LANGDEVEL_IMG -> LANGDEVEL_TAR [label="make save___devel"]; LANGBUILD_IMG -> LANGBUILD_TAR [label="make save___build"]; LANGTEST_IMG -> LANGTEST_TAR [label="make save___test"]; LANGINSTALLENV_IMG -> LANGINSTALLENV_TAR [label="make save___install_env"]; LANGINSTALLDEVEL_IMG -> LANGINSTALLDEVEL_TAR [label="make save___install_devel"]; LANGINSTALLBUILD_IMG -> LANGINSTALLBUILD_TAR [label="make save___install_build"]; LANGINSTALLTEST_IMG -> LANGINSTALLTEST_TAR [label="make save___install_test"]; color=royalblue; label = "cache//"; } } @enddot