Docker Compose env_file: понять приоритет переменных

Категория: docker · Язык: YAML · Обновлено:

env_file передаёт значения в контейнер, а environment задаёт значения в Compose service. Если один ключ указан в обоих местах, environment имеет приоритет и перекрывает значение из файла.

Рабочий пример

YAML
services:
  api:
    image: example/api:1.0
    env_file:
      - .env.runtime
    environment:
      LOG_LEVEL: info
      DATABASE_URL: postgresql://app@db/app

env_file применяется при создании контейнера. CLI --env-file решает другую задачу: подставляет значения в compose YAML до запуска. Проверьте итог через docker compose config.

Частый вопрос

Почему значение из env_file не подставилось в YAML?

Потому что env_file задаёт окружение контейнера. Интерполяция compose файла выполняется из shell environment или CLI --env-file.