#!/bin/sh set -e # Script d'entrĂ©e pour le container RegisFlow echo "🚀 DĂ©marrage de RegisFlow..." # Attendre que la base de donnĂ©es externe soit prĂȘte echo "📡 Attente de la base de donnĂ©es externe..." # Extraire l'hĂŽte et le port depuis DATABASE_URL DB_HOST=$(echo $DATABASE_URL | sed -n 's|.*@\([^:]*\):.*|\1|p') DB_PORT=$(echo $DATABASE_URL | sed -n 's|.*:\([0-9]*\)/.*|\1|p') DB_USER=$(echo $DATABASE_URL | sed -n 's|.*://\([^:]*\):.*|\1|p') if [ -z "$DB_HOST" ] || [ -z "$DB_PORT" ]; then echo "❌ Erreur: DATABASE_URL mal formatĂ©e" echo "Format attendu: postgresql://user:password@host:port/database" echo "DATABASE_URL actuelle: $DATABASE_URL" exit 1 fi echo "🔍 Test de connexion Ă  $DB_HOST:$DB_PORT..." # Attendre jusqu'Ă  120 secondes pour PostgreSQL externe RETRIES=24 while [ $RETRIES -gt 0 ]; do if pg_isready -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER"; then echo "✅ PostgreSQL externe est prĂȘt!" break fi echo "⏳ Base de donnĂ©es externe non prĂȘte, tentative $((25-RETRIES))/24, attente de 5 secondes..." sleep 5 RETRIES=$((RETRIES-1)) done if [ $RETRIES -eq 0 ]; then echo "❌ Timeout: Impossible de se connecter Ă  PostgreSQL externe aprĂšs 2 minutes" echo "🔍 Diagnostic:" echo " - Host: $DB_HOST" echo " - Port: $DB_PORT" echo " - User: $DB_USER" echo " - VĂ©rifiez que PostgreSQL est accessible depuis Docker" echo " - VĂ©rifiez le firewall et les permissions rĂ©seau" exit 1 fi echo "✅ Base de donnĂ©es prĂȘte!" # ExĂ©cuter les migrations de base de donnĂ©es echo "🔄 ExĂ©cution des migrations..." npx drizzle-kit push # CrĂ©er le rĂ©pertoire des sauvegardes s'il n'existe pas mkdir -p /app/backups # DĂ©marrer l'application echo "🎯 DĂ©marrage de l'application RegisFlow..." exec "$@"