# --- Etapa 1: Build (Construcción) --- # Usamos una imagen de Node.js para instalar dependencias y construir la aplicación de React. FROM node:20-alpine AS build # Establecemos el directorio de trabajo dentro del contenedor. WORKDIR /app # Copiamos los archivos de manifiesto del proyecto. COPY package.json ./ COPY package-lock.json ./ # Instalamos las dependencias. RUN npm install # Copiamos el resto del código fuente de la aplicación. COPY . . # Ejecutamos el script de construcción de Vite para generar los archivos estáticos. RUN npm run build # --- Etapa 2: Serve (Servir) --- # Usamos una imagen de Nginx, que es un servidor web muy ligero y eficiente. # Es ideal para servir archivos estáticos (HTML, CSS, JS). FROM nginx:1.25-alpine # Copiamos los archivos de producción construidos en la etapa anterior # al directorio por defecto donde Nginx sirve los archivos. COPY --from=build /app/dist /usr/share/nginx/html # Copiamos nuestra configuración de Nginx para manejar el enrutamiento de la SPA COPY frontend.nginx.conf /etc/nginx/conf.d/default.conf # Exponemos el puerto 80 (el puerto por defecto de Nginx). EXPOSE 80