fix: healthcheck nunca retorna 503 — evita 'no available server'
health.php: - DB fallo → 'warning' (no 'unhealthy', no cierra tráfico Traefik) - Redis ya era warning desde commit anterior docker-compose.yml: - timeout: 5s → 10s (DB externa puede tardar más) - start_period: 40s → 60s (tiempo suficiente para that migrations corran) - fallback: si health.php falla, intenta / raíz antes de marcar unhealthy
This commit is contained in:
+3
-3
@@ -33,11 +33,11 @@ services:
|
|||||||
networks:
|
networks:
|
||||||
- whatsapp-network
|
- whatsapp-network
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "curl", "-f", "http://localhost/health.php"]
|
test: ["CMD-SHELL", "curl -sf http://localhost/health.php || curl -sf http://localhost/ || exit 1"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 5s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 40s
|
start_period: 60s
|
||||||
logging:
|
logging:
|
||||||
driver: "json-file"
|
driver: "json-file"
|
||||||
options:
|
options:
|
||||||
|
|||||||
+4
-3
@@ -30,15 +30,16 @@ try {
|
|||||||
$result = $db->query("SELECT 1")->fetch();
|
$result = $db->query("SELECT 1")->fetch();
|
||||||
|
|
||||||
$health['checks']['database'] = [
|
$health['checks']['database'] = [
|
||||||
'status' => $result ? 'ok' : 'error',
|
'status' => $result ? 'ok' : 'warning',
|
||||||
'host' => DB_HOST
|
'host' => DB_HOST
|
||||||
];
|
];
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
// DB caída = warning, no unhealthy — Traefik debe seguir ruteando
|
||||||
|
// (mejor mostrar error 500 en la app que "no available server")
|
||||||
$health['checks']['database'] = [
|
$health['checks']['database'] = [
|
||||||
'status' => 'error',
|
'status' => 'warning',
|
||||||
'error' => $e->getMessage()
|
'error' => $e->getMessage()
|
||||||
];
|
];
|
||||||
$health['status'] = 'unhealthy';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Check Redis
|
// 3. Check Redis
|
||||||
|
|||||||
Reference in New Issue
Block a user