# Dockerfile pour Espace Paie - Optimisé pour Coolify FROM node:18-alpine AS base # Installer les dépendances système nécessaires RUN apk add --no-cache libc6-compat # === ÉTAPE 1 : Dependencies === FROM base AS deps WORKDIR /app # Copier les fichiers de dépendances COPY package.json package-lock.json* ./ # Installer avec les devDependencies (TypeScript, ESLint, etc.) pour le build ENV NODE_ENV=development RUN npm ci --include=dev # === ÉTAPE 2 : Build === FROM base AS builder WORKDIR /app # Copier les dépendances depuis l'étape précédente COPY --from=deps /app/node_modules ./node_modules COPY . . # Variables d'environnement pour le build ENV NEXT_TELEMETRY_DISABLED=1 ENV NODE_ENV=production # Debug: Vérifier que components existe RUN ls -la components/ && ls -la components/ui/ || echo "components manquant!" # Nettoyer complètement le cache pour éviter les problèmes de casse sur Linux RUN rm -rf .next node_modules/.cache # Build Next.js en mode standalone RUN npm run build # === ÉTAPE 3 : Production === FROM base AS runner WORKDIR /app ENV NODE_ENV=production ENV NEXT_TELEMETRY_DISABLED=1 # Créer un utilisateur non-root RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs # Copier les fichiers nécessaires COPY --from=builder /app/public ./public # Copier le build standalone COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static # Utiliser l'utilisateur non-root USER nextjs # Exposer le port EXPOSE 3000 ENV PORT=3000 ENV HOSTNAME="0.0.0.0" # Démarrer l'application CMD ["node", "server.js"]