O que medimos nesta versão
No Compose 5.3.0, nosso comando -f project/compose.yaml usou project/.env por padrão. O argumento --env-file cli.env foi relativo à pasta de execução. Já env_file: config/service.env foi relativo ao arquivo Compose.
Anote a versão ao investigar caminhos. Um tutorial antigo ou outra implementação pode não reproduzir exatamente este teste.
Monte esta estrutura
scratch/ # execute os comandos aqui
.env # CC_WHICH=caller
cli.env # CC_WHICH=explicit-caller-file
project/
.env # CC_WHICH=project
compose.yaml
config/
service.env # CC_SERVICE_PATH=relative-to-compose-fileConteúdo do arquivo Compose:
services:
probe:
image: busybox:1.37
env_file: config/service.env
environment:
CC_WHICH: ${CC_WHICH:-fallback}Execute a partir de scratch/, sem uma variável CC_WHICH exportada no shell.
Compare os resultados
docker compose -f project/compose.yaml configResultado medido: CC_WHICH=project e CC_SERVICE_PATH=relative-to-compose-file.
docker compose --env-file cli.env -f project/compose.yaml configResultado medido: CC_WHICH=explicit-caller-file, mantendo o mesmo CC_SERVICE_PATH. Escolher outro arquivo de interpolação não mudou a localização do arquivo do serviço.
O caminho parecido que falha
docker compose --env-file config/service.env -f project/compose.yaml configNão existe scratch/config/service.env. Nosso comando retornou erro com couldn’t find env file. O argumento de linha de comando não foi reinterpretado como um caminho dentro de project/.
Se você realmente quiser usar esse arquivo também como entrada do modelo, o caminho explícito a partir daqui seria project/config/service.env. Um arquivo separado para o modelo costuma deixar a intenção mais clara.
Deixe seu script reproduzível
- Registre
docker compose version. - Defina a pasta de execução do script.
- Escolha caminhos explícitos para o Compose e para o arquivo de interpolação.
- Confira o modelo antes de publicar qualquer mudança.
Um caminho absoluto para --env-file pode ajudar quando a pasta de execução varia. Este teste não cobre múltiplos arquivos Compose, redirecionamento por COMPOSE_FILE, alteração de --project-directory ou Swarm. Nenhum container ou serviço existente foi alterado.
Fontes e prova
Documentação consultada em 12.09.2026. Prova própria: