Ответ вслух Junior Docker для разработчика обновлено

Docker Compose в разработке

Вопрос

Зачем разработчику Docker Compose и как ты его используешь?

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

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

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

Коротко

Compose описывает в одном файле всё окружение проекта: например, PostgreSQL 16, Redis и само приложение. Новый разработчик делает docker compose up и через минуту работает с теми же версиями, что и вся команда и CI.

Что должно прозвучать в ответе

  • Поднять зависимости одной командой: база, Redis, очередь

  • Одинаковые версии сервисов у всей команды и в CI

  • Сервисы общаются по именам в общей сети

  • Тома для данных базы, bind mount для кода

  • healthcheck и depends_on с condition для порядка старта

Что могут спросить следом

  • Как сделать, чтобы данные базы пережили пересоздание контейнера?
  • Почему из контейнера api не работает localhost:5432?

Разбор

Compose описывает в одном файле всё окружение проекта: например, PostgreSQL 16, Redis и само приложение. Новый разработчик делает docker compose up и через минуту работает с теми же версиями, что и вся команда и CI.

Сервисы попадают в общую сеть и видят друг друга по именам, поэтому приложение подключается к db:5432, а не к localhost. Данные базы храню в именованном томе, чтобы они переживали пересоздание контейнера, а для кода в разработке использую bind mount, чтобы правки были видны сразу.

Порядок старта настраиваю через healthcheck у базы и depends_on с условием service_healthy. Иначе приложение может стартовать раньше, чем база готова принимать подключения.

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

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