Выбор ответа Middle Docker для разработчика обновлено

depends_on и готовность базы

Вопрос

В Compose у api указано depends_on: [db]. При старте API иногда падает: база ещё не принимает подключения. Как исправить средствами Compose?

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

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

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

Коротко

Правильный ответ: Healthcheck у db и condition: servicehealthy у api. Простой dependson гарантирует только порядок запуска контейнеров, а не готовность процесса внутри.

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

  1. Ничего не делать, depends_on и так ждёт готовности базы
  2. Поставить restart: no, чтобы api не стартовал раньше
  3. Healthcheck у db и condition: service_healthy у apiправильный ответ
  4. Поменять порядок сервисов в файле, db поставить первым

Разбор

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

  • Готовности простой depends_on не ждёт.
  • restart: no уберёт даже автоматический перезапуск.
  • Порядок в файле на старт не влияет.

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

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