Why it matters
A compose file grows one service at a time, and the mistakes show up when you run it: two services on the same host port, a service waiting on a healthcheck that doesn't exist, a typo in a volume name or a dependency loop. Reading the YAML doesn't show how the pieces connect.
This tool reads the file the way docker compose config does: it interpolates variables, validates against the Compose Specification schema and builds the model, including the dependencies Compose adds for links, network_mode and volumes_from. Then it draws the services and their dependencies and lints for the problems that break docker compose up or weaken security, each with its line number.
How to use it
- Paste your compose.yaml, or choose the file.
- Add any variables from your .env file.
- Fix the errors first, then read the warnings.
- Use the graph and table to check how services connect.
FAQ
Does it give the same errors as docker compose?
For the checks it covers, yes: schema validation, interpolation, undefined resources, cycles, invalid ports and the network_mode and container_name rules. They were checked against the docker compose binary on the awesome-compose examples and hundreds of variations.
Why is a port clash only a warning?
docker compose config accepts it, but docker compose up fails when the second container tries to bind a host port the first already has. The tool flags it so you can fix it first.
What does service_healthy need?
The service it waits for must define a healthcheck. Without one, docker compose up fails with “container has no healthcheck configured”.
Is my compose file uploaded?
No. It's parsed and checked in your browser.
Credits and licences
Parses YAML with yaml 2.9.1 (ISC License, Eemeli Aro) and validates with the Compose Specification JSON Schema (Apache License 2.0).