diff --git a/Dockerfile b/Dockerfile index 328e752..17e7c0d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -45,14 +45,15 @@ COPY --from=builder --chown=regisflow:nodejs /build/package*.json ./ COPY --from=builder --chown=regisflow:nodejs /build/dist ./dist COPY --from=builder --chown=regisflow:nodejs /build/shared ./shared COPY --from=builder --chown=regisflow:nodejs /build/drizzle.config.ts ./ +COPY --from=builder --chown=regisflow:nodejs /build/node_modules ./node_modules -# Installer uniquement les dépendances de production -RUN npm ci --only=production && \ - npm cache clean --force && \ +# Les dépendances sont déjà copiées depuis le builder +# Nettoyer le cache npm uniquement +RUN npm cache clean --force && \ rm -rf /tmp/* # Copier les scripts de configuration -COPY --chown=regisflow:nodejs docker-entrypoint.sh /usr/local/bin/ +COPY --chown=regisflow:nodejs docker-entrypoint-simple.sh /usr/local/bin/docker-entrypoint.sh COPY --chown=regisflow:nodejs postgres-prod.conf ./ RUN chmod +x /usr/local/bin/docker-entrypoint.sh diff --git a/docker-entrypoint-simple.sh b/docker-entrypoint-simple.sh new file mode 100755 index 0000000..9527844 --- /dev/null +++ b/docker-entrypoint-simple.sh @@ -0,0 +1,33 @@ +#!/bin/sh +set -e + +# Script d'entrée simplifié pour RegisFlow +echo "🚀 Démarrage de RegisFlow (mode simplifié)..." + +# 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)) +done + +if [ $RETRIES -eq 0 ]; then + echo "❌ Timeout: Base de données non accessible" + exit 1 +fi + +# Créer les répertoires nécessaires +mkdir -p /app/backups /app/logs + +# Initialiser la base de données (les tables seront créées automatiquement par l'application) +echo "✅ Base de données configurée" + +# Démarrer l'application +echo "🎯 Démarrage de RegisFlow..." +exec node dist/index.js \ No newline at end of file diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index b25f3cd..04197fb 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -32,14 +32,22 @@ echo "✅ Base de données prête!" # Exécuter les migrations de base de données echo "🔄 Exécution des migrations..." -npx drizzle-kit push +if command -v drizzle-kit >/dev/null 2>&1; then + npx drizzle-kit push +else + echo "⚠️ drizzle-kit non disponible, tentative avec npm run db:push..." + if [ -f package.json ]; then + npm run db:push || echo "ℹ️ Migrations manuelles nécessaires" + else + echo "ℹ️ Package.json non trouvé, poursuite sans migrations" + fi +fi # Créer le répertoire des sauvegardes s'il n'existe pas mkdir -p /app/backups -# Construire l'application pour la production -echo "🔨 Construction de l'application..." -npm run build +# L'application est déjà construite dans le Dockerfile +echo "✅ Application pré-construite" # Démarrer l'application en production echo "🎯 Démarrage de l'application RegisFlow..."