Improve the application's containerization and startup process

Refactors Dockerfile and entrypoint script for enhanced reliability and Node.js 18 compatibility, including database migration.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: dec54137-d5a2-4406-8ad4-5f2f9fb110bf
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/5d315300-98fa-429a-abb0-4fdce6a2e3c9.jpg
This commit is contained in:
michaelschal committed 2025-07-13 11:34:45 +00:00
1 parent afb7a90e0a
commit 766b451768
5 files changed
+62 -55

No files matched your search

Executable → Regular
+13 -51
View File
@@ -1,59 +1,21 @@
#!/bin/sh
set -e
# Script d'entrée simplifié pour RegisFlow
echo "🚀 Démarrage de RegisFlow (mode simplifié)..."
echo "🚀 RegisFlow Production Startup"
echo "Database URL: ${DATABASE_URL:0:30}..."
# Attendre que PostgreSQL soit prêt
echo "📡 Attente de la base de données..."
RETRIES=24
while [ $RETRIES -gt 0 ]; do
if pg_isready -h regisflow-db -p 5432 -U regisflow >/dev/null 2>&1; then
echo "✅ PostgreSQL prêt!"
break
fi
echo "⏳ Attente... ($((25-RETRIES))/24)"
sleep 5
RETRIES=$((RETRIES-1))
# Attendre que PostgreSQL soit disponible
echo "⏳ Waiting for PostgreSQL..."
until pg_isready -h $(echo $DATABASE_URL | cut -d'/' -f3 | cut -d':' -f1) -p $(echo $DATABASE_URL | cut -d':' -f4 | cut -d'/' -f1) > /dev/null 2>&1; do
echo "PostgreSQL is unavailable - sleeping"
sleep 2
done
if [ $RETRIES -eq 0 ]; then
echo "❌ Timeout: Base de données non accessible"
exit 1
fi
echo "✅ PostgreSQL is ready!"
# Créer les répertoires nécessaires
mkdir -p /app/backups /app/logs
# Migrer la base de données
echo "🔄 Running database migrations..."
npm run db:push
# Créer les tables de la base de données
echo "📦 Création des tables de la base de données..."
# Méthode 1: Utiliser Drizzle Kit (recommandé)
if npx drizzle-kit push --config=./drizzle.config.ts; then
echo "✅ Tables créées avec succès via Drizzle"
else
echo "⚠️ Drizzle Kit failed, essai avec init.sql..."
# Méthode 2: Fallback avec init.sql si Drizzle échoue
if [ -f "/app/init.sql" ]; then
export PGPASSWORD="$POSTGRES_PASSWORD"
if psql -h regisflow-db -p 5432 -U regisflow -d regisflow -f /app/init.sql; then
echo "✅ Tables créées avec succès via init.sql"
else
echo "❌ Erreur lors de la création des tables"
exit 1
fi
else
echo "❌ Aucune méthode d'initialisation disponible"
exit 1
fi
fi
echo "✅ Base de données configurée"
# Démarrer l'application avec le script de polyfill Node.js 18
echo "🎯 Démarrage de RegisFlow..."
export NODE_ENV=production
export PORT=5000
cd /app
exec node server/prod-start.js
echo "🎯 Starting RegisFlow application..."
exec "$@"