Browser-based tool that turns messy Docker Compose output into clean, readable debugging views. Paste output from docker-autocompose, docker compose config, or raw docker-compose.yml — get sanitized YAML with sensitive values redacted, per-service cards, volume comparison tables, and a markdown table ready for Discord or GitHub support channels.
Live: baker-scripts.github.io/docker-compose-debugger
Parsed per-service view showing image, ports, volumes, networks, environment, and extras (restart policy, hostname, depends_on, resource limits). Empty sections are omitted. Switch between YAML and Cards views with the tab bar.
One-click "Copy as Markdown Table" generates a table with columns for Service, Image, Ports, Volumes, and Networks — paste directly into Discord or GitHub issues.
| What | Example | Result |
|---|---|---|
| Sensitive env values | RADARR__POSTGRES__HOST: db.example.com |
RADARR__POSTGRES__HOST: **REDACTED** |
| Email addresses | NOTIFY: user@example.com |
NOTIFY: **REDACTED** |
| Home directory paths | /home/john/media:/tv |
~/media:/tv |
Detected patterns: password, secret, token, api_key, auth, credential, private_key, vpn_user, and more.
Safe-listed keys (kept as-is): PUID, PGID, TZ, UMASK, LOG_LEVEL, WEBUI_PORT, etc.
Removes auto-generated fields that clutter compose output:
com.docker.compose.*labels- S6-overlay env vars (
S6_*) - Default runtime values (
ipc: private,entrypoint: /init) - Locale/path env vars (
PATH,LANG,XDG_*) - Empty env values and empty maps/arrays
Detects common misconfigurations and shows warnings with links to documentation:
- Hardlinks advisory: Warns when separate
/tv,/movies, etc. mounts prevent hardlinks and instant moves
Accepts multiple input formats:
- Raw
docker-compose.ymlcontent - Output from
docker compose config - Output from
docker-autocompose(strips shell prompts and non-YAML lines)
The Advanced Settings panel allows custom sensitive patterns (regex) and safe key lists. Configuration persists in localStorage.
Download docker-compose-debugger.html from the latest release and open it in any browser. Everything runs client-side in a single HTML file — no server, no network requests, no data leaves your browser.
npm install
npm run dev # Start Vite dev server
npm test # Run tests (vitest)
npm run build # Build single-file dist/index.htmlSingle-page app built with Vite + vanilla TypeScript. The build produces one self-contained HTML file via vite-plugin-singlefile.
src/
dom.ts # Shared el() DOM helper (no innerHTML)
patterns.ts # Type guards, regex patterns, utility functions
extract.ts # Extracts YAML from mixed console output
redact.ts # Redacts sensitive values, anonymizes paths
noise.ts # Strips auto-generated noise fields
advisories.ts # Detects misconfigurations (hardlinks, etc.)
services.ts # Parses compose object into ServiceInfo[]
markdown.ts # Generates markdown table from ServiceInfo[]
cards.ts # Renders per-service card DOM
config.ts # Customizable patterns, localStorage persistence
clipboard.ts # Copy, PrivateBin, and Gist sharing
disclaimer.ts # PII warnings and legal disclaimers
main.ts # UI assembly, tabs, and event wiring
npm test # Run tests
npx vitest run --coverage # Run with coverage report- All processing happens in your browser — no data is sent anywhere
- No analytics, tracking, or external requests
- The "Open PrivateBin" and "Open GitHub Gist" buttons copy to clipboard and open a new tab — you paste manually
MIT