Example
Input (docker-compose.yml)
services:
web:
image: nginx
depends_on: [api]
networks: [frontend]
api:
build: ./api
depends_on: [db]
networks: [frontend, backend]
db:
image: postgres:16
volumes:
- db-data:/var/lib/postgresql/data
networks: [backend]
networks:
frontend:
backend:
volumes:
db-data:Result
6 resources, 5 relationships. - web → api (depends_on) - api → db (depends_on) - frontend → web/api (network) - backend → api/db (network) - db → db-data (volume)
Note
depends_on edges are dashed because they're intra-column (service ↔ service). Only top-level networks / volumes / configs / secrets appear as graph nodes. Bind mounts (./local:/path) are excluded.
Usage / FAQ
When to use this
- PR review — verify the structure of a new docker-compose.yml at a glance
- Onboarding — explain the local dev stack to new engineers visually
- Debugging — quickly find depends_on cycles, missing networks, structural issues
- Compose → K8s migration — map structure before rewriting (pair tool: Kubernetes Visualizer)
- Demo to ops — surface external dependencies (networks/volumes/secrets) clearly
FAQ
- Q.Which Compose versions are supported?
- A.Compose v2/v3+ (current standard). Recognizes services / networks / volumes / configs / secrets top-level keys. Compose v1 (services at top level) is not supported — deprecated since 2018.
- Q.Why aren't bind mounts shown in the graph?
- A.Bind mounts like ./local:/path depend on the host filesystem; they're not Compose-managed resources. The graph shows named volumes that Compose manages directly — the core assets when migrating or porting environments.
- Q.Are Swarm configs and secrets supported?
- A.Yes. Top-level configs and secrets referenced by services appear as graph nodes with edges. Even outside Swarm mode, some tools (Podman, Kubernetes conversion) use the same spec.
Fun facts
Docker Compose's predecessor was Fig (2014, Orchard Labs). Docker Inc. acquired Orchard in 2014 and absorbed Fig as docker-compose. The fig.yml → docker-compose.yml filename change is the residue.
Docker — Orchard acquisitionCompose v1 (Python) ran 2014-2024. v2 (2021+) is rewritten in Go and integrated as a Docker CLI plugin — that's why the command changed from 'docker-compose' (hyphen) to 'docker compose' (space). v1 reached EOL in 2024.
Compose v2 migration guideThe Compose Spec was jointly standardized in 2020 by Docker / Microsoft / AWS / Mirantis. Other tools (Podman Compose, Kompose → Kubernetes converter) also implement it — docker-compose.yml is the de-facto lingua franca for container orchestration.
Compose Spec
Related guides
- Docker Compose Explained — Services, Networks, Volumes, and the Practical Setup
How docker-compose.yml is structured, what each top-level key (services / networks / volumes / configs / secrets) does, depends_on vs healthcheck, named volumes vs bind mounts, and the gotchas that break dev environments.
- How Docker Containers Actually Work
Containers aren't lightweight VMs — they're Linux processes with namespaces and cgroups around them. Walk through namespaces, cgroups, the overlay filesystem, image layers, and what Docker the daemon actually does.
Related tools
- JSON Formatter / Validator
Format, validate, and minify JSON strings. Adjust indent and optionally sort keys. Runs entirely in your browser.
- String Case Converter
Convert strings between camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, and Title Case — all six cases shown side-by-side.
- Regex Tester
Test JavaScript regular expressions with live match results. Supports g/i/m/s/u/y flags and capture groups.
- Markdown Preview
Render Markdown to HTML side-by-side. Supports CommonMark + GFM (tables, fenced code, task lists). marked is lazy-loaded.
- HTML → Markdown
Convert HTML into Markdown. Headings, lists, links, code, tables, blockquotes. Uses the browser's DOMParser — accurate, 0 dependency.
- YAML ↔ JSON
Convert between YAML and JSON. Tolerates comments and multiline strings on the YAML side. yaml is lazy-loaded.
- Text Diff
Compare two texts and highlight added/removed lines, words, or characters.
- JSON Diff
Compare two JSON values, with optional key sorting and JSON-aware error messages.
- CSV ↔ JSON
Convert between CSV and JSON. Handles quoted fields, custom delimiters, and header rows.
- SQL Formatter
Format SQL queries with proper indentation and keyword casing. Supports PostgreSQL, MySQL, SQLite, and standard dialects.
- XML Formatter
Pretty-print or minify XML with attribute preservation. Handles SOAP, sitemaps, and config files.
- XML ↔ JSON
Convert between XML and JSON with attribute and element handling.
- Smart Paste
Paste any text and get tool recommendations — JSON, JWT, Base64, URL, UUID, Cron, and 9 more types auto-detected.
- Lorem Ipsum
Generate placeholder text in words, sentences, or paragraphs. Classic Lorem Ipsum or randomized.
- JSON Path
Query JSON with JSONPath expressions ($.store.book[*].author etc.) and inspect matches.
- JSON Schema Validator
Validate JSON data against a JSON Schema (Draft 2020-12). Powered by Ajv with format support.
- JSON Schema Generator
Generate a JSON Schema (Draft 2020-12) from a sample JSON. Infer types, required fields, and nested structures automatically.
- HTML Formatter
Beautify or minify HTML with proper indentation, attribute alignment, and configurable wrap.
- CSS Formatter
Beautify or minify CSS with proper indentation. Configurable selector and property style.
- JavaScript Formatter
Beautify or minify JavaScript with brace style and indent options. Powered by js-beautify.
- TOML ↔ JSON
Convert between TOML (Tom's Obvious Minimal Language) and JSON. Used in Cargo.toml, pyproject.toml, etc.
- INI ↔ JSON
Convert INI configuration to JSON and back. Supports sections, comments (; or #), and key=value.
- JSON → TypeScript
Generate TypeScript interfaces from a JSON sample. Nested objects become separate interfaces.
- JS Object → JSON
Convert a JavaScript object literal (unquoted keys, single quotes, trailing commas, comments) into standard JSON. Lenient parser, strict output.
- Slug Generator
Convert text into a URL-safe slug. Configurable separator, lowercase, and accent stripping.
- ASCII Tree
Convert indented text or path list into a box-drawing tree (├── │ └──).
- Diff Patch
Generate a unified diff (-u) patch from two text inputs. Compatible with `git apply` / `patch -p0`.
- Mock Data
Generate fake JSON records and SQL INSERT seed data — names, emails, custom fields, UUIDs, dates, and more. 0 dependency.
- MongoDB Extended JSON
Convert MongoDB Extended JSON (EJSON) between Canonical and Relaxed forms, or strip BSON wrappers to plain JSON. Recognizes 16 wrapper types ($oid/$date/$numberLong/$numberDecimal/$binary/...).
- Kubernetes YAML Visualizer
Paste Kubernetes manifests and see the resource graph — Deployments, Services, Ingresses, ConfigMaps, Secrets, PVCs, and how they connect. yaml is lazy-loaded.
- PDF Text Extractor
Extract text from a PDF file — page by page or as a single document. Markdown-friendly output, all client-side.
- PPTX Text Extractor
Extract slide text from a .pptx file — plain / markdown / per-slide. Great for converting decks to markdown. All client-side.
- Regex Railroad Diagram
Visualize your regex as a railroad diagram — trace branches, groups, and quantifiers at a glance, in your browser.
- Word & Character Counter
Count characters (with/without spaces), words, sentences, paragraphs, lines, and bytes in real time — free, in your browser.
- LLM Token Counter
Count LLM tokens and estimate cost — exact for GPT (tiktoken), estimated for Claude/Gemini. Context-limit gauge. All in your browser.