fix: eliminar bloqueo infinito en espera de Redis al arrancar

- entrypoint.sh: Redis wait tenía loop infinito sin timeout → el contenedor
  se quedaba colgado para siempre si Redis tardaba, causando 504 Gateway Timeout
  Ahora tiene MAX_RETRIES=15 (30s) y continúa aunque Redis no esté disponible
- entrypoint.sh: removido set -e para que errores no-críticos (permisos,
  SSL, etc.) no maten el arranque del contenedor
- docker-compose.yml: removido depends_on redis con condition:service_healthy
  Docker bloqueaba el inicio de app hasta que Redis estuviera healthy,
  lo que podía exceder el timeout de Traefik
This commit is contained in:
Lizandro Guarnizo
2026-03-12 13:31:57 -05:00
parent 937a02e5ac
commit c8a4a399fc
2 changed files with 19 additions and 12 deletions
-3
View File
@@ -30,9 +30,6 @@ services:
- WEBHOOK_VERIFY_TOKEN=${WEBHOOK_VERIFY_TOKEN}
- LOG_LEVEL=${LOG_LEVEL:-INFO}
- ENABLE_RATE_LIMIT=${ENABLE_RATE_LIMIT:-true}
depends_on:
redis:
condition: service_healthy
networks:
- whatsapp-network
healthcheck:
+19 -9
View File
@@ -1,17 +1,27 @@
#!/bin/bash
# Entrypoint script para el contenedor
set -e
# set -e removido: comandos no críticos (permisos, SSL) no deben matar el arranque
echo "🚀 Iniciando WhatsApp Bot Manager..."
# Esperar a que Redis esté disponible
echo "⏳ Esperando Redis..."
until redis-cli -h ${REDIS_HOST:-redis} ping 2>/dev/null; do
echo " Redis no disponible, esperando..."
sleep 2
done
echo "✅ Redis conectado"
# Esperar a que Redis esté disponible (con timeout para no bloquear el arranque)
if [ "${REDIS_HOST:-redis}" != "" ]; then
echo "⏳ Esperando Redis..."
MAX_RETRIES=15
RETRY=0
until redis-cli -h ${REDIS_HOST:-redis} -p ${REDIS_PORT:-6379} ping 2>/dev/null | grep -q PONG; do
RETRY=$((RETRY + 1))
if [ $RETRY -ge $MAX_RETRIES ]; then
echo "⚠️ Redis no disponible después de $MAX_RETRIES intentos, continuando sin Redis..."
break
fi
echo " Redis no disponible, intento $RETRY/$MAX_RETRIES..."
sleep 2
done
if [ $RETRY -lt $MAX_RETRIES ]; then
echo "✅ Redis conectado"
fi
fi
# Esperar a que MySQL esté disponible
if [ "${DB_HOST}" = "mysql" ] || [ "${DB_HOST}" = "db" ]; then