Improve database connection reliability and add debugging tools

Enhances database connection robustness with retry logic and introduces `debug-docker.sh` for easier debugging.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 91318273-c764-4fd4-be04-bdc12c38af32
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/6e755801-08e8-4492-805e-ac3610de5a2a.jpg
This commit is contained in:
michaelschal committed 2025-07-09 20:50:34 +00:00
1 parent 3028259f6e
commit a2e4588776
3 files changed
+78 -9

No files matched your search

+39
View File
@@ -0,0 +1,39 @@
#!/bin/bash
# Script de debug pour Docker RegisFlow
echo "🔍 Debug Docker RegisFlow"
echo "1. État des containers:"
docker-compose ps
echo ""
echo "2. Logs PostgreSQL (dernières 50 lignes):"
docker-compose logs --tail=50 postgres
echo ""
echo "3. Logs Application (dernières 50 lignes):"
docker-compose logs --tail=50 regisflow
echo ""
echo "4. Test de connectivité réseau:"
echo " - Test ping postgres depuis regisflow:"
docker-compose exec regisflow ping -c 3 postgres 2>/dev/null || echo "❌ Ping échoué"
echo ""
echo "5. Variables d'environnement dans l'application:"
docker-compose exec regisflow env | grep -E "(DATABASE_URL|POSTGRES|NODE_ENV)"
echo ""
echo "6. Test manuel de connexion PostgreSQL:"
docker-compose exec postgres pg_isready -U regisflow -d regisflow
echo ""
echo "7. Processus dans le container PostgreSQL:"
docker-compose exec postgres ps aux
echo ""
echo "8. Test de port PostgreSQL depuis l'hôte:"
timeout 5 bash -c "</dev/tcp/localhost/5433" && echo "✅ Port 5433 accessible" || echo "❌ Port 5433 inaccessible"
echo ""
echo "🏁 Debug terminé"
+19 -2
View File
@@ -6,11 +6,28 @@ echo "🚀 Démarrage de RegisFlow..."
# Attendre que la base de données soit prête
echo "📡 Attente de la base de données..."
until pg_isready -h postgres -p 5432 -U regisflow; do
echo "⏳ Base de données non prête, attente de 5 secondes..."
echo "🔍 Test de connexion à postgres:5432..."
# Attendre jusqu'à 120 secondes pour PostgreSQL
RETRIES=24
while [ $RETRIES -gt 0 ]; do
if pg_isready -h postgres -p 5432 -U regisflow; then
echo "✅ PostgreSQL est prêt!"
break
fi
echo "⏳ Base de données 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 après 2 minutes"
echo "🔍 Diagnostic:"
echo " - Vérifiez que le service postgres démarre correctement"
echo " - Vérifiez les logs: docker-compose logs postgres"
exit 1
fi
echo "✅ Base de données prête!"
# Exécuter les migrations de base de données
+20 -7
View File
@@ -118,13 +118,26 @@ export async function registerRoutes(app: Express): Promise<Server> {
});
// Health check endpoint for Docker
app.get('/health', (req, res) => {
res.status(200).json({
status: 'healthy',
timestamp: new Date().toISOString(),
uptime: process.uptime(),
environment: process.env.NODE_ENV || 'development'
});
app.get('/health', async (req, res) => {
try {
// Test de connexion à la base de données
await storage.initializeDefaults();
res.status(200).json({
status: 'healthy',
timestamp: new Date().toISOString(),
uptime: process.uptime(),
database: 'connected',
environment: process.env.NODE_ENV || 'development'
});
} catch (error) {
console.error('Health check failed:', error);
res.status(503).json({
status: 'unhealthy',
timestamp: new Date().toISOString(),
database: 'disconnected',
error: error instanceof Error ? error.message : 'Unknown error'
});
}
});
app.get('/api/auth/me', requireAuth, async (req, res) => {