Здоровье сервиса в Docker
Здоровье сервиса ждёт, пока проверка внутри не станет успешной, и только потом пускает соседа. Простой порядок старта лишь сдвигает создание контейнера и готовности не ждёт. Условие здоровья ждёт успеха проверки.
Сервис db на busybox
держится в работе и получает
периодическую проверку.
Сервис app стартует
только когда db
здоров:
services:
db:
image: busybox
command: ["sleep", "300"]
healthcheck:
test: ["CMD", "echo", "ok"]
interval: 2s
app:
image: busybox
command: ["sleep", "300"]
depends_on:
db:
condition: service_healthy
Проверка внутри db
часто повторяется с паузой
в две секунды.
Пока она не зелёная,
app не считается
запущенным по правилу
зависимости.
Поднимают проект в фоне:
docker compose up -d
В списке через мгновение
видны оба сервиса.
Разница проявляется при
остановке db:
сосед с условием здоровья
не стартует, пока проверка
снова не пройдёт.
Добавьте сервис store на busybox с короткой успешной проверкой и сервис gate, зависящий от здоровья store.
Поднимите проект в фоне и отметьте, что gate появляется после успешной проверки store.