From 39cc269d299aa2ffe197aa3a404b36b6998af913 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Sun, 13 Jul 2025 12:02:30 +0000 Subject: [PATCH] Improve application startup process and fix potential database issues Refactors Dockerfile and entrypoint script for enhanced reliability, debugging, and single 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 --- Dockerfile | 8 +- ...zzle-confi-1752408043211_1752408043211.txt | 132 ++++++++++++++++++ docker-entrypoint-simple.sh | 21 +-- replit.md | 8 ++ 4 files changed, 152 insertions(+), 17 deletions(-) create mode 100644 attached_assets/Pasted-o-config-path-provided-using-default-drizzle-config-ts-Reading-config-file-app-drizzle-confi-1752408043211_1752408043211.txt diff --git a/Dockerfile b/Dockerfile index 4705478..45d7ae0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -82,10 +82,4 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ # Point d'entrée avec script de démarrage ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] -CMD ["node", "dist/index.js"] - -# Utiliser dumb-init pour gérer les signaux -ENTRYPOINT ["dumb-init", "--"] - -# Démarrer avec le script d'entrée -CMD ["docker-entrypoint.sh"] \ No newline at end of file +CMD ["node", "dist/index.js"] \ No newline at end of file diff --git a/attached_assets/Pasted-o-config-path-provided-using-default-drizzle-config-ts-Reading-config-file-app-drizzle-confi-1752408043211_1752408043211.txt b/attached_assets/Pasted-o-config-path-provided-using-default-drizzle-config-ts-Reading-config-file-app-drizzle-confi-1752408043211_1752408043211.txt new file mode 100644 index 0000000..ffcdf28 --- /dev/null +++ b/attached_assets/Pasted-o-config-path-provided-using-default-drizzle-config-ts-Reading-config-file-app-drizzle-confi-1752408043211_1752408043211.txt @@ -0,0 +1,132 @@ +o config path provided, using default 'drizzle.config.ts' + +Reading config file '/app/drizzle.config.ts' + +Using 'pg' driver for database querying + +[⣷] Pulling schema from database... + +[⣯] Pulling schema from database... + +[⣟] Pulling schema from database... + +[✓] Pulling schema from database... + +[i] No changes detected + +🎯 Starting RegisFlow application... + +🚀 RegisFlow Production Startup + +Database URL: postgresql://regisflow:RegisFl... + +⏳ Waiting for PostgreSQL... + +Database URL: postgresql://regisflow:RegisFlow2024!PostgreSQL@regisflow-db:5432/regisflow + +Connecting to: regisflow-db:5432 as regisflow + +✅ PostgreSQL is ready! + +✅ PostgreSQL is ready! + +🔄 Running database migrations... + +> rest-express@1.0.0 db:push + +> drizzle-kit push + +No config path provided, using default 'drizzle.config.ts' + +Reading config file '/app/drizzle.config.ts' + +Using 'pg' driver for database querying + +[⣷] Pulling schema from database... + +[⣯] Pulling schema from database... + +[✓] Pulling schema from database... + +[i] No changes detected + +🎯 Starting RegisFlow application... + +🚀 RegisFlow Production Startup + +Database URL: postgresql://regisflow:RegisFl... + +⏳ Waiting for PostgreSQL... + +Database URL: postgresql://regisflow:RegisFlow2024!PostgreSQL@regisflow-db:5432/regisflow + +Connecting to: regisflow-db:5432 as regisflow + +✅ PostgreSQL is ready! + +✅ PostgreSQL is ready! + +🔄 Running database migrations... + +> rest-express@1.0.0 db:push + +> drizzle-kit push + +No config path provided, using default 'drizzle.config.ts' + +Reading config file '/app/drizzle.config.ts' + +Using 'pg' driver for database querying + +[⣷] Pulling schema from database... + +[⣯] Pulling schema from database... + +[✓] Pulling schema from database... + +[i] No changes detected + +🎯 Starting RegisFlow application... + +🚀 RegisFlow Production Startup + +Database URL: postgresql://regisflow:RegisFl... + +⏳ Waiting for PostgreSQL... + +Database URL: postgresql://regisflow:RegisFlow2024!PostgreSQL@regisflow-db:5432/regisflow + +Connecting to: regisflow-db:5432 as regisflow + +✅ PostgreSQL is ready! + +✅ PostgreSQL is ready! + +🔄 Running database migrations... + +> rest-express@1.0.0 db:push + +> drizzle-kit push + +No config path provided, using default 'drizzle.config.ts' + +Reading config file '/app/drizzle.config.ts' + +Using 'pg' driver for database querying + +[⣷] Pulling schema from database... + +[⣯] Pulling schema from database... + +[⣟] Pulling schema from database... + +[✓] Pulling schema from database... + +[i] No changes detected + +🎯 Starting RegisFlow application... + + + + + \ No newline at end of file diff --git a/docker-entrypoint-simple.sh b/docker-entrypoint-simple.sh index b59dbb2..c4344a2 100644 --- a/docker-entrypoint-simple.sh +++ b/docker-entrypoint-simple.sh @@ -2,27 +2,27 @@ set -e echo "🚀 RegisFlow Production Startup" -echo "Database URL: ${DATABASE_URL:0:30}..." +echo "Node.js version: $(node --version)" +echo "Current directory: $(pwd)" +echo "Available files:" +ls -la # Attendre que PostgreSQL soit disponible echo "⏳ Waiting for PostgreSQL..." -echo "Database URL: $DATABASE_URL" - -# Extraire les paramètres de connexion plus simplement DB_HOST="regisflow-db" DB_PORT="5432" DB_USER="regisflow" -echo "Connecting to: $DB_HOST:$DB_PORT as $DB_USER" +echo "Testing connection to: $DB_HOST:$DB_PORT as $DB_USER" # Attendre avec timeout -RETRIES=30 +RETRIES=20 while [ $RETRIES -gt 0 ]; do if pg_isready -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" > /dev/null 2>&1; then echo "✅ PostgreSQL is ready!" break fi - echo "PostgreSQL is unavailable - sleeping ($((31-RETRIES))/30)" + echo "PostgreSQL is unavailable - sleeping ($((21-RETRIES))/20)" sleep 3 RETRIES=$((RETRIES-1)) done @@ -32,11 +32,12 @@ if [ $RETRIES -eq 0 ]; then exit 1 fi -echo "✅ PostgreSQL is ready!" - -# Migrer la base de données +# Migrer la base de données une seule fois echo "🔄 Running database migrations..." npm run db:push echo "🎯 Starting RegisFlow application..." +echo "Command to execute: $@" + +# Démarrer l'application avec debugging exec "$@" \ No newline at end of file diff --git a/replit.md b/replit.md index ee4a272..c64ece4 100644 --- a/replit.md +++ b/replit.md @@ -349,6 +349,14 @@ Preferred communication style: Simple, everyday language. - ✅ Created .env.example template for environment configuration - ✅ Optimized Docker Compose for maximum deployment compatibility +### Docker Application Startup Fix (January 13, 2025) +- ✅ Fixed application startup loop after database migrations +- ✅ Cleaned up duplicate ENTRYPOINT declarations in Dockerfile +- ✅ Simplified docker-entrypoint-simple.sh script with proper exec +- ✅ Added debugging output to track application startup process +- ✅ Reduced PostgreSQL timeout to 60 seconds (20 retries × 3s) +- ✅ Enhanced startup script with Node.js version and directory checks + ### Portainer Deployment Fix (January 10, 2025) - ✅ Resolved Docker image pull error "regisflow-regisflow:latest" in Portainer - ✅ Created local image building solution with "regisflow:latest" tag