34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Docker
		
	
	
	
	
	
|  | # --- 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
 | ||
|  | 
 | ||
|  | # Exponemos el puerto 80 (el puerto por defecto de Nginx).
 | ||
|  | EXPOSE 80
 | ||
|  | 
 | ||
|  | # El comando por defecto de la imagen de Nginx ya es iniciar el servidor,
 | ||
|  | # así que no necesitamos un CMD o ENTRYPOINT.
 |