# Environment Precedence Inside Containers — Docker Compose

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

> Which value does the container see?

## environment beats env_file

Inside containers, values set with `environment` in the Compose file take precedence over the same keys from `env_file`, which take precedence over `ENV` defaults baked into the image. `docker compose run -e KEY=value` overrides for a single run. Interpolation (`${...}`) happens earlier, when the file is loaded. When in doubt, inspect the resolved configuration with `docker compose config`, or `docker compose exec <svc> env` in a running container.

## Precedence order

Highest first. Check the Compose docs for the full list in your version.

```text
1. docker compose run -e KEY=value          (one-off override)
2. environment: in the Compose file          (values may be interpolated from shell / .env)
3. env_file: files listed for the service
4. ENV in the Dockerfile (image default)
```

## Inspect, do not guess

Run docker compose config (or exec env in a running container) to see the value a service will actually get.

**Quiz:** A key is in both env_file and environment. Which value does the container get?

- [ ] Neither
- [ ] The value from env_file
- [x] The value from environment
- [ ] A random one

*Answer:* The value from environment. Explicit environment wins.
