A command-line tool that visualizes multi-stage Dockerfiles as dependency graphs.
Uses Graphviz to generate visual representations of Docker build processes, helping you understand build dependencies, document architecture, and debug complex multi-stage builds.
The generated graph includes:
Nodes:
- All build stages
- Default build target (highlighted in grey)
- External images (with dashed borders)
Edges:
FROM ...
dependencies → solid line with full arrowCOPY --from=...
dependencies → dashed line with empty arrowRUN --mount=(.*)from=...
dependencies → dotted line with diamond arrow
Supports multiple output formats (PDF, SVG, PNG), a legend, and layout customization options.
- A multi-stage Dockerfile
Run dockerfilegraph
in your project directory to generate a Dockerfile.pdf
with your build graph.
-
Alpine-based (Graphviz 12.2) - Default:
docker run --rm --user "$(id -u):$(id -g)" \ -v "$(pwd)":/workspace -w /workspace \ ghcr.io/patrickhoefler/dockerfilegraph
-
Ubuntu-based (Graphviz 2.42):
docker run --rm --user "$(id -u):$(id -g)" \ -v "$(pwd)":/workspace -w /workspace \ ghcr.io/patrickhoefler/dockerfilegraph:ubuntu
brew install patrickhoefler/tap/dockerfilegraph
dockerfilegraph
Requirements: Graphviz installed locally
toolctl install dockerfilegraph
dockerfilegraph
-
Native Build
Requirements:
make
, Go and Graphvizmake build ./dockerfilegraph
-
Container Build (Alpine)
Requirements:
make
, Go and Dockermake build-docker-image-alpine docker run \ --rm \ --user "$(id -u):$(id -g)" \ --workdir /workspace \ --volume "$(pwd)":/workspace \ dockerfilegraph:alpine
-
Container Build (Ubuntu)
Requirements:
make
, Go and Dockermake build-docker-image-ubuntu docker run \ --rm \ --user "$(id -u):$(id -g)" \ --workdir /workspace \ --volume "$(pwd)":/workspace \ dockerfilegraph:ubuntu
Common Flags:
--output svg|png|pdf
- Choose your output format--legend
- Add a legend explaining the notation--layers
- Show all Docker layers
All Available Options:
❯ dockerfilegraph --help
dockerfilegraph visualizes your multi-stage Dockerfile.
It creates a visual graph representation of the build process.
Usage:
dockerfilegraph [flags]
Flags:
-c, --concentrate concentrate the edges (default false)
-d, --dpi uint dots per inch of the PNG export (default 96)
-e, --edgestyle style of the graph edges, one of: default, solid (default default)
-f, --filename string name of the Dockerfile (default "Dockerfile")
-h, --help help for dockerfilegraph
--layers display all layers (default false)
--legend add a legend (default false)
-m, --max-label-length uint maximum length of the node labels, must be at least 4 (default 20)
-n, --nodesep float minimum space between two adjacent nodes in the same rank (default 1)
-o, --output output file format, one of: canon, dot, pdf, png, raw, svg (default pdf)
-r, --ranksep float minimum separation between ranks (default 0.5)
-u, --unflatten uint stagger length of leaf edges between [1,u] (default 0)
--version display the version of dockerfilegraph
Found a bug or have a feature request? Open an issue or submit a pull request.