Выбор ответа 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-файла и служит для интерполяции ${...}.
Варианты ответа
.envподставляет${TAG}в compose-файл, аenv_fileпередаёт переменные в контейнерправильный ответ- Обе переменные попадут в окружение контейнера, а в сам compose-файл ничего не подставится
.envчитается только в Compose v1, а в v2 подстановку${TAG}делает лишьenv_fileenv_fileиспользуется для подстановки${TAG}, а.envпередаётся внутрь контейнера
Разбор
Файл .env в каталоге проекта читается при разборе compose-файла и служит для интерполяции ${...}. В контейнер он сам по себе не попадает. env_file: передаёт переменные в окружение контейнера, но для подстановки в YAML не используется. Проверить итог помогает docker compose config.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.