From a2e4588776e82e513960744919fce00e826b59ed Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Wed, 9 Jul 2025 20:50:34 +0000 Subject: [PATCH] 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 --- debug-docker.sh | 39 +++++++++++++++++++++++++++++++++++++++ docker-entrypoint.sh | 21 +++++++++++++++++++-- server/routes.ts | 27 ++++++++++++++++++++------- 3 files changed, 78 insertions(+), 9 deletions(-) create mode 100755 debug-docker.sh diff --git a/debug-docker.sh b/debug-docker.sh new file mode 100755 index 0000000..456854e --- /dev/null +++ b/debug-docker.sh @@ -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 " { }); // 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) => {