Your Health Check Is Lying to You
dev.to·
Designing reliable container deployments requires alignment between reverse proxies, orchestrators, and application health checks. Standard setups using Docker Compose and Traefik often suffer from subtle routing window failures during updates. When containers restart during updates, proxies can prematurely direct live traffic to app instances that are still completing startup tasks or database migrations. Furthermore, configuration oversights—such as omitting the explicit Host header in health checks—cause proxies like Traefik to send checks with internal Docker service names. If the application rejects unexpected host headers with a 400 Bad Request, the proxy marks the container as permanently unhealthy. For backend developers architecting containerized microservices, this highlights why health probes must accurately mirror real application readiness and explicitly satisfy host verification contracts to prevent deployment downtime and false-positive health check failures.