graph{ rankdir=TB; margin=0; subgraph { rank=same; c [label="Worker\nCelery"]; s [label="Web-App\nFlask"]; } subgraph{rank = max; db [label="DB\nRedis"]; gg [label="Geogame log provider\nNginx"]; } subgraph{ rank=same; in [label="Internal network",shape="diamond"]; n [label="Static file server\nNginx"]; } subgraph{ rank=source; t [label="HTTP frontend\nTraefik",style=dotted]; en [label="External network",shape="diamond"]; } t -- en [style=dotted]; s -- en [label="labels"]; n --en [label="labels"]; c -- n [label="Shared volume ",style=dashed]; s -- in; c -- in; db --in; gg -- in; }