frontend/Dockerfile
2025-08-03 02:37:57 +02:00

61 lines
1.3 KiB
Docker

# 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