# Validating With docker compose config — Docker Compose

Source: https://www.skillbyai.com/en/docker-compose/c-validate

> Catch typos before running anything.

## Schema validation and the resolved model

`docker compose config` loads every file, applies interpolation and merges, validates against the Compose schema, and prints the result. A misspelled key (for example `port` instead of `ports`) is an error rather than being silently ignored. Run it in CI and before every change; add `--format json` with jq to check specific values, `--services`, `--volumes` or `--profiles` to list parts.

## A typo caught by validation, run

I ran this with Docker Compose v2.38.1 and jq in the demo "shop" project. docker compose config parses, interpolates, merges and validates the files without starting containers; the Docker daemon was not running, so nothing was started. broken.yaml uses port instead of ports; validation fails with "additional properties 'port' not allowed". The sed command only shortens the file path in the message.

```bash
docker compose -f broken.yaml config 2>&1 | sed "s|$PWD/||"
```

Output:

```
validating broken.yaml: services.web additional properties 'port' not allowed
```

## Run config in CI

A one-line CI step (docker compose config -q) catches broken Compose files before anyone pulls them.

**Quiz:** What does docker compose config do?

- [x] Resolves, merges and validates the Compose files and prints the result
- [ ] Starts all containers
- [ ] Deletes volumes
- [ ] Pushes images

*Answer:* Resolves, merges and validates the Compose files and prints the result. Validate before you run.
