# Multi-stage build pour le frontend React FROM node:18-alpine AS base WORKDIR /app # Installer pnpm RUN npm install -g pnpm # Copier les fichiers de dépendances COPY package.json pnpm-lock.yaml* ./ # Installer les dépendances RUN pnpm install # Stage de développement FROM base AS development # Copier le code source COPY . . # Exposer le port de développement EXPOSE 3000 # Commande de développement avec hot reload CMD ["pnpm", "dev", "--host", "0.0.0.0"] # Stage de build pour la production FROM base AS build # Copier le code source COPY . . # Variables d'environnement pour le build ARG VITE_API_URL ENV VITE_API_URL=$VITE_API_URL # Construire l'application RUN pnpm build # Stage de production avec Nginx FROM nginx:alpine AS production # Copier la configuration Nginx personnalisée COPY infrastructure/nginx/frontend.conf /etc/nginx/conf.d/default.conf # Copier les fichiers buildés COPY --from=build /app/dist /usr/share/nginx/html # Copier le script d'entrée pour les variables d'environnement COPY infrastructure/docker/frontend-entrypoint.sh /docker-entrypoint.d/40-frontend-config.sh RUN chmod +x /docker-entrypoint.d/40-frontend-config.sh # Exposer le port EXPOSE 80 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ CMD curl -f http://localhost/ || exit 1 # Nginx démarre automatiquement