РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗dcNdMgWt 31 of 39 menu
◀ ▶

Ожидание базы в Docker

Ожидание базы пускает приложение только после того, как сервер ответил на проверку, а не сразу после старта процесса. Простой порядок старта готовности не ждёт, а условие здоровья ждёт. Тогда Node поднимается, когда ping уже проходит внутри db.

Сервис db на mongo:8.3 без пароля получает проверку с паузой 5 секунд:

services: db: image: mongo:8.3 healthcheck: test: ["CMD", "mongosh", "--quiet", "--eval", "db.adminCommand('ping').ok"] interval: 5s web: build: . ports: - "3000:3000" depends_on: db: condition: service_healthy

Команда внутри проверки спрашивает локальный сервер через mongosh с флагом --quiet. Сервис web собирается из того же скрипта с MongoClient, что и в уроке про подключение: база app, коллекция notes, ответ hello на порту 3000.

Пока статус db не здоров, web не считается запущенным по правилу зависимости. Пересборка и фоновый подъём:

docker compose up -d --build

В списке сервисов web появляется после успешной проверки db. Страница localhost:3000 отдаёт hello без повторных обновлений из-за неготовой базы.

Добавьте проверку готовности сервису db с паузой 5 секунд и свяжите сервис gate с условием здоровья db.

Поднимите проект в фоне и отметьте в списке сервисов, что gate стартует после успешной проверки db.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить