diff --git a/.DS_Store b/.DS_Store index bceee35..473cac4 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index 051ac66..05fa80c 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -77,7 +77,7 @@ docker-compose -f docker-compose.prod.yml --env-file .env.production up -d db re sleep 10 # Appliquer les migrations Prisma -docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate deploy +docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx --yes prisma@6.4.1 migrate deploy # Démarrer l'application docker-compose -f docker-compose.prod.yml --env-file .env.production up -d app @@ -151,7 +151,7 @@ docker-compose -f docker-compose.prod.yml --env-file .env.production stop app docker-compose -f docker-compose.prod.yml --env-file .env.production build app # Appliquer les migrations si nécessaire -docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate deploy +docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx --yes prisma@6.4.1 migrate deploy # Redémarrer docker-compose -f docker-compose.prod.yml --env-file .env.production up -d app @@ -161,10 +161,10 @@ docker-compose -f docker-compose.prod.yml --env-file .env.production up -d app ```bash # Vérifier le statut des migrations -docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate status +docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx --yes prisma@6.4.1 migrate status # Appliquer les migrations -docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate deploy +docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx --yes prisma@6.4.1 migrate deploy ``` ## 📊 Monitoring et Logs diff --git a/Dockerfile.prod b/Dockerfile.prod index 741df87..7a7b234 100644 --- a/Dockerfile.prod +++ b/Dockerfile.prod @@ -56,6 +56,9 @@ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static COPY --from=builder --chown=nextjs:nodejs /app/node_modules/.prisma ./node_modules/.prisma COPY --from=builder --chown=nextjs:nodejs /app/node_modules/@prisma ./node_modules/@prisma +# Copier le CLI Prisma (nécessaire pour les migrations) +COPY --from=builder --chown=nextjs:nodejs /app/node_modules/prisma ./node_modules/prisma + # Copier le schéma Prisma (nécessaire pour certaines opérations) COPY --from=builder --chown=nextjs:nodejs /app/prisma ./prisma diff --git a/QUICK_START_PRODUCTION.md b/QUICK_START_PRODUCTION.md index 2d0c44e..9127f34 100644 --- a/QUICK_START_PRODUCTION.md +++ b/QUICK_START_PRODUCTION.md @@ -27,7 +27,7 @@ nano .env.production docker-compose -f docker-compose.prod.yml --env-file .env.production build docker-compose -f docker-compose.prod.yml --env-file .env.production up -d db redis sleep 15 -docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate deploy +docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx --yes prisma@6.4.1 migrate deploy docker-compose -f docker-compose.prod.yml --env-file .env.production up -d app ``` @@ -54,7 +54,7 @@ docker-compose -f docker-compose.prod.yml --env-file .env.production restart app docker-compose -f docker-compose.prod.yml --env-file .env.production logs -f # Appliquer les migrations -docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate deploy +docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx --yes prisma@6.4.1 migrate deploy # Accéder à la base de données docker-compose -f docker-compose.prod.yml --env-file .env.production exec db psql -U neah_user -d calendar_db diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 48cb967..2b45fbb 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -11,8 +11,6 @@ # - Configurez les volumes pour la persistance des données # - Ajustez les ports selon votre infrastructure réseau -version: '3.8' - services: # ============================================ # PostgreSQL - Base de données principale diff --git a/lib/redis.ts b/lib/redis.ts index adf60aa..c2fb6aa 100644 --- a/lib/redis.ts +++ b/lib/redis.ts @@ -29,11 +29,26 @@ export function getRedisClient(): Redis { isConnecting = true; connectionAttempts = 0; - // Set Redis connection parameters from environment variables only - const redisOptions = { - host: process.env.REDIS_HOST, - port: process.env.REDIS_PORT ? parseInt(process.env.REDIS_PORT) : undefined, - password: process.env.REDIS_PASSWORD, + // Set Redis connection parameters from environment variables + // Prefer REDIS_URL if available, otherwise use individual variables + let redisOptions: any; + + if (process.env.REDIS_URL) { + // Use REDIS_URL if provided (e.g., redis://:password@host:port) + console.log('Connecting to Redis using REDIS_URL'); + redisOptions = process.env.REDIS_URL; + } else { + // Fallback to individual environment variables + console.log('Connecting to Redis using individual environment variables'); + redisOptions = { + host: process.env.REDIS_HOST || 'localhost', + port: process.env.REDIS_PORT ? parseInt(process.env.REDIS_PORT) : 6379, + password: process.env.REDIS_PASSWORD, + }; + } + + // Add common options + const commonOptions = { retryStrategy: (times: number) => { connectionAttempts = times; if (times > MAX_RECONNECT_ATTEMPTS) { @@ -52,8 +67,12 @@ export function getRedisClient(): Redis { keyPrefix: '' // No prefix to keep keys clean }; - console.log('Connecting to Redis using environment variables'); - redisClient = new Redis(redisOptions); + // Merge options if using individual variables + if (typeof redisOptions === 'string') { + redisClient = new Redis(redisOptions, commonOptions); + } else { + redisClient = new Redis({ ...redisOptions, ...commonOptions }); + } redisClient.on('error', (err) => { console.error('Redis connection error:', err); diff --git a/scripts/deploy-prod.sh b/scripts/deploy-prod.sh index 64ae437..f73fdc0 100755 --- a/scripts/deploy-prod.sh +++ b/scripts/deploy-prod.sh @@ -55,7 +55,7 @@ fi echo "✅ Redis est prêt" echo "🗄️ Application des migrations Prisma..." -docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate deploy +docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx --yes prisma@6.4.1 migrate deploy echo "🚀 Démarrage de l'application..." docker-compose -f docker-compose.prod.yml --env-file .env.production up -d app