-
Notifications
You must be signed in to change notification settings - Fork 5.7k
Closed
compose-spec/compose-go
#756Labels
Description
Description
Docker Compose interpolates variables only once, at the time it loads each environment file. If a variable is overridden later, the interpolated value does not get updated — leading to stale values.
Is this an expected behavior or an issue?
Steps To Reproduce
Given these two environment files:
.envs/local/postgres:
DB_USER=my_user
POSTGRES_USER="${DB_USER}".envs/staging/postgres:
DB_USER=my_user_overridden
POSTGRES_USER="${DB_USER}"and the following docker compose files:
docker-compose.local.yml:
services:
postgres:
image: pgvector/pgvector:0.7.4-pg14
env_file:
- .envs/local/postgres
docker-compose.staging.yml:
services:
postgres:
env_file:
- .envs/staging/postgres
Running:
docker compose -f docker-compose.local.yml -f docker-compose.staging.yml run postgres env | grep USER
yields:
DB_USER=my_user_overridden
POSTGRES_USER=my_user
I expected:
DB_USER=my_user_overridden
POSTGRES_USER=my_user_overridden
Compose Version
Docker Compose version v2.34.0
Docker Environment
Anything else?
No response