Выбор ответа Middle Docker Compose обновлено

.env против env_file

Вопрос

Рядом с compose.yaml лежит .env с TAG=1.4.2, а в сервисе указано image: api:${TAG} и env_file: app.env. Что верно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: .env подставляет ${TAG} в compose-файл, а envfile передаёт переменные в контейнер. Файл .env в каталоге проекта читается при разборе compose-файла и служит для интерполяции ${...}.

Варианты ответа

  1. .env подставляет ${TAG} в compose-файл, а env_file передаёт переменные в контейнерправильный ответ
  2. Обе переменные попадут в окружение контейнера, а в сам compose-файл ничего не подставится
  3. .env читается только в Compose v1, а в v2 подстановку ${TAG} делает лишь env_file
  4. env_file используется для подстановки ${TAG}, а .env передаётся внутрь контейнера

Разбор

Файл .env в каталоге проекта читается при разборе compose-файла и служит для интерполяции ${...}. В контейнер он сам по себе не попадает. env_file: передаёт переменные в окружение контейнера, но для подстановки в YAML не используется. Проверить итог помогает docker compose config.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.