Docker Compose в разработке
Вопрос
Зачем разработчику Docker Compose и как ты его используешь?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Поднять зависимости одной командой: база, 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 ошибок.