validating ...\compose.yaml: services.web.healthcheck additional properties
'intervall' not allowed — a key in the Compose file is misspelled or sits at the
wrong level. The path before the words names the section, and the quoted word is the key
Compose rejected. Correct the spelling or move the key to where it belongs.
Here intervall should be interval. When the path in front is
empty, the rejected key is at the top level of the file; in this test it was a service key,
environment:, that had lost its indentation.
The error
PS> docker compose -p fix10-cs-p5 config
validating C:\...\p5\compose.yaml: services.web.healthcheck additional properties 'intervall' not allowed
The command exited with code 1. The path to the test folder is shortened; nothing else in the line was changed. The file:
services:
web:
image: alpine
command: ["echo", "hello"]
healthcheck:
test: ["CMD", "true"]
intervall: 10s
Why it happens
The line starts with validating and the file name: Compose rejected the file
itself, and docker compose config printed it without creating a network or
a container. healthcheck has no key called intervall, so the
key was reported as an extra property of that section. A misspelled key under
build gave the same wording with services.web.build as the path:
validating C:\...\p9\compose.yaml: services.web.build additional properties 'dockerfil' not allowed
An environment: block written at the top level, where it belongs under a
service, gave the message with an empty path, which shows as two spaces after the colon:
services:
web:
image: alpine
command: ["echo", "hello"]
environment:
TZ: UTC
validating C:\...\p8\compose.yaml: additional properties 'environment' not allowed
A misspelled key directly under a service printed a different message in the same test,
services.web.enviroment false schema; that case has its own post, linked
below.
The fix
services:
web:
image: alpine
command: ["echo", "hello"]
healthcheck:
test: ["CMD", "true"]
interval: 10s
PS> docker compose -p fix10-cs-p5 config
name: fix10-cs-p5
services:
web:
...
healthcheck:
test:
- CMD
- "true"
interval: 10s
...
The corrected spelling passed and config printed the resolved file. For the
top-level case, indenting environment: under web so that it
lines up with image: fixed it, and config printed
TZ: UTC under the service. Running docker compose config after
every edit catches these before anything starts.
How it was reproduced
Four one-service files checked with
docker compose config from Windows PowerShell 5.1: an alpine
service with intervall under healthcheck, a service with only a
build: block and dockerfil in it, and two alpine
services with an
environment: block at the top level, and enviroment directly
under the service. Docker Compose v5.7.0, Docker Engine 29.9.3, Docker Desktop 4.99.0 on Windows (version
10.0.26300). Nothing was started; the project names with fix10-cs- are this
test's own.
Frequently asked
- What does 'additional properties not allowed' mean in docker compose?
- A key in the file is not one Compose accepts at that place. The path before the words names the section, and the quoted word is the rejected key: a typo or a key at the wrong indentation in the cases tested here.
- Why is the path empty in the additional properties error?
- The rejected key is at the top level of the file. In this test an environment: block written without indentation, outside the service, gave the message with an empty path.
- How do I check a docker-compose.yml for wrong keys?
- Run docker compose config. It validates the file without starting anything and printed the additional properties error with exit code 1 for each of the three files tested here.
More decoded errors in the Fixes category. For a misspelled key directly under a service, see Docker Compose: false schema from a misspelled key.