| 
									
										
										
										
											2025-08-15 17:41:04 -03:00
										 |  |  | # --- 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
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-03 14:16:18 -03:00
										 |  |  | # Copiamos nuestra configuración de Nginx para manejar el enrutamiento de la SPA
 | 
					
						
							|  |  |  | COPY frontend.nginx.conf /etc/nginx/conf.d/default.conf
 | 
					
						
							| 
									
										
										
										
											2025-08-15 17:41:04 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-09-03 14:16:18 -03:00
										 |  |  | # Exponemos el puerto 80 (el puerto por defecto de Nginx).
 | 
					
						
							|  |  |  | EXPOSE 80
 |