mirror of
https://github.com/R0m1k3/Regisflow.git
synced 2026-10-23 23:28:18 +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
|
# Attendre que la base de données soit prête
|
||||||
echo "📡 Attente de la base de données..."
|
echo "📡 Attente de la base de données..."
|
||||||
until pg_isready -h postgres -p 5432 -U regisflow; do
|
echo "🔍 Test de connexion à postgres:5432..."
|
||||||
echo "⏳ Base de données non prête, attente de 5 secondes..."
|
|
||||||
|
# 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
|
sleep 5
|
||||||
|
RETRIES=$((RETRIES-1))
|
||||||
done
|
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!"
|
echo "✅ Base de données prête!"
|
||||||
|
|
||||||
# Exécuter les migrations de base de données
|
# 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
|
// Health check endpoint for Docker
|
||||||
app.get('/health', (req, res) => {
|
app.get('/health', async (req, res) => {
|
||||||
res.status(200).json({
|
try {
|
||||||
status: 'healthy',
|
// Test de connexion à la base de données
|
||||||
timestamp: new Date().toISOString(),
|
await storage.initializeDefaults();
|
||||||
uptime: process.uptime(),
|
res.status(200).json({
|
||||||
environment: process.env.NODE_ENV || 'development'
|
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) => {
|
app.get('/api/auth/me', requireAuth, async (req, res) => {
|
||||||
|
|||||||
Reference in new issue
Block a user