Restore legacy docker-compose diagram semantics
This commit is contained in:
@@ -176,6 +176,31 @@ def generate_docker_traefik_dynu(compose: dict, out_dot: Path, out_svg: Path) ->
|
||||
render_svg(out_dot, out_svg)
|
||||
|
||||
|
||||
def generate_compose_topology(compose: dict, out_dot: Path, out_svg: Path) -> None:
|
||||
services = compose.get("services") or {}
|
||||
networks = compose.get("networks") or {}
|
||||
lines = [
|
||||
"digraph Compose {",
|
||||
" rankdir=LR;",
|
||||
' node [fontname="Helvetica"];',
|
||||
]
|
||||
for service in sorted(services):
|
||||
lines.append(f' "svc:{service}" [label="{service}", shape=box, style=filled, fillcolor="#dfefff"];')
|
||||
for net in sorted(networks):
|
||||
lines.append(f' "net:{net}" [label="{net}", shape=ellipse, style=filled, fillcolor="#f4f4f4"];')
|
||||
|
||||
for service, svc in sorted(services.items()):
|
||||
svc_nets = svc.get("networks") or []
|
||||
if isinstance(svc_nets, dict):
|
||||
svc_nets = svc_nets.keys()
|
||||
for net in svc_nets:
|
||||
lines.append(f' "svc:{service}" -> "net:{net}";')
|
||||
|
||||
lines.append("}")
|
||||
write_dot(out_dot, lines)
|
||||
render_svg(out_dot, out_svg)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("legacy", nargs="*")
|
||||
@@ -199,7 +224,7 @@ def main() -> None:
|
||||
|
||||
generate_docker_traefik_dynu(compose, out_dir / "docker-traefik-dynu.dot", out_dir / "docker-traefik-dynu.svg")
|
||||
generate_physical_topology(compose, out_dir / "physical-topology.dot", out_dir / "physical-topology.svg")
|
||||
generate_docker_traefik_dynu(compose, out_dir / "docker-compose.dot", out_dir / "docker-compose.svg")
|
||||
generate_compose_topology(compose, out_dir / "docker-compose.dot", out_dir / "docker-compose.svg")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user