Docker Compose env_file: понять приоритет переменных
env_file передаёт значения в контейнер, а environment задаёт значения в Compose service. Если один ключ указан в обоих местах, environment имеет приоритет и перекрывает значение из файла.
Рабочий пример
services:
api:
image: example/api:1.0
env_file:
- .env.runtime
environment:
LOG_LEVEL: info
DATABASE_URL: postgresql://app@db/appenv_file применяется при создании контейнера. CLI --env-file решает другую задачу: подставляет значения в compose YAML до запуска. Проверьте итог через docker compose config.
Частый вопрос
Почему значение из env_file не подставилось в YAML?
Потому что env_file задаёт окружение контейнера. Интерполяция compose файла выполняется из shell environment или CLI --env-file.