mirror of
https://github.com/R0m1k3/Regisflow.git
synced 2026-10-11 17:29:48 +02:00
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:
1 parent
3028259f6e
commit
a2e4588776
3 files changed
+78
-9
No files matched your search
Executable
+39
@@ -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
@@ -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
@@ -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) => {
|
||||
|
||||
Reference in new issue
Block a user