Docker Compose checker

Check a pasted Compose file for YAML errors, targeted Compose-model issues, and static advisories before running it. Findings include source locations when available. Your inputs are processed locally, without uploading them or running Docker.

Paste one Compose YAML document.
Optional KEY=VALUE interpolation lines. Not service env_file.

Your text stays in this browser.

Check the file you intend to run

Paste one Compose YAML document, up to 256 KiB and 4,000 lines. If it uses variables, supply the relevant KEY=VALUE assignments in the optional interpolation input, up to 64 KiB and 2,000 lines. Use representative values rather than secrets where possible. The checker does not read your shell, project .env, or referenced files.

Fix input and YAML syntax problems first: they prevent a normalized model from being produced. For parsed files, follow each finding's path and fix direction. A source location can point to the relevant YAML node rather than the exact offending character.

Editing either input clears the previous result. An unexpected checker failure leaves your text available for another attempt. Copying the report copies diagnostic evidence, not a repaired Compose file.

What a static check can tell you

LayerWhat it checksWhat a clean result does not establish
YAML syntaxWhether the pasted document can be parsed safelyThat it describes a usable Compose project
Compose modelTargeted structures, types, references, and relationships in this fileFull Specification coverage or a resolved multi-file project
Static advisoriesDeclarations worth reviewing, such as broad exposure or elevated privilegesA vulnerability finding or security verdict

The model checks follow a targeted snapshot of the Compose Specification reference. A valid YAML document can still have Compose errors, and an advisory does not itself change model validity.

Interpolation is separate from container environment

Source or declarationIts roleWhat this checker can use
Pasted interpolation assignmentsExplicit values for this checkOnly the assignments you supply
Shell, project .env, or CLI environment filesSources used by real Compose interpolationNot read by the browser
Service environmentEnvironment values for the containerIts declaration in the pasted file
Service env_fileA file supplying container environment valuesIts declaration, not the file contents

A service's env_file does not fill a ${VAR} token in this checker. Supply the interpolation assignment separately when you want to test a known value.

The checker handles $VAR, ${VAR}, defaults, required values, alternatives, and escaped dollars. Empty and unset are different: ${VAR-default} uses its default only when unset, while ${VAR:-default} also uses it when empty. The required forms ? and :? make the same unset-versus-empty distinction; + and :+ select an alternative when the corresponding condition is met. Required forms can block resolution; an unresolved optional value remains a different finding. $$ preserves a dollar sign instead of starting interpolation.

Interpolation applies to values, not YAML keys, and supported expressions can nest up to eight levels here. This is not a shell evaluator. See the Compose interpolation reference for the operator meanings and the environment-source guide for real-project precedence.

Declarations are not host facts

DeclarationStatic checkStill unknown
depends_onReferenced services and supported conditionsWhether dependencies start successfully
Networks and named volumesDeclared resources and service referencesWhether external resources exist
Secrets and configsDeclarations and grantsFile readability, contents, and runtime access
ProfilesMembership declared in the pasteWhich profiles your actual command activates
HealthchecksThe declaration, including health-dependent relationshipsWhether the application becomes ready

Published ports are normalized for syntax and same-file overlap checks, including supported ranges and bracketed IPv6 addresses. A free-looking declaration can still collide with another process or project on the host. Likewise, declaring a healthcheck is not evidence that it will pass. Docker's service reference describes these relationships.

One paste cannot resolve every project

The obsolete version field does not select a legacy 2.x or 3.x schema. include and extends create a different problem: their referenced files can change the effective model. This checker does not fetch or merge them. It retains useful findings from the pasted file while marking the unresolved composition as incomplete.

Verify with the real project

Run docker compose config -q using the files, project directory, environment sources, and profiles intended for deployment. Use docker compose config --environment to inspect the environment used for interpolation. The docker compose config reference covers these project-level checks.

Neither this browser check nor configuration validation proves that an image exists, host files are accessible, ports are available, or services remain healthy. Those questions need the actual project and Docker runtime. The checker does not execute code, inspect images, or issue a security verdict.