28 lines
		
	
	
		
			882 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			882 B
		
	
	
	
		
			Docker
		
	
	
	
	
	
| # --- Etapa 1: Build ---
 | |
| # Usamos una imagen ligera de Node.js para instalar dependencias y compilar el frontend
 | |
| FROM node:20-alpine AS build
 | |
| WORKDIR /app
 | |
| 
 | |
| # Copiamos package.json y package-lock.json para cachear las dependencias
 | |
| COPY package*.json ./
 | |
| RUN npm install
 | |
| 
 | |
| # Copiamos el resto del código del frontend
 | |
| COPY . .
 | |
| # Ejecutamos el script de build de Vite
 | |
| RUN npm run build
 | |
| 
 | |
| # --- Etapa 2: Producción ---
 | |
| # Usamos la imagen oficial de Nginx, que es muy pequeña y eficiente
 | |
| FROM nginx:1.25-alpine
 | |
| 
 | |
| # Copiamos los archivos estáticos generados en la etapa de build
 | |
| # a la carpeta que Nginx sirve por defecto.
 | |
| COPY --from=build /app/dist /usr/share/nginx/html
 | |
| 
 | |
| # Nginx ya está configurado para escuchar en el puerto 80 por defecto.
 | |
| # Simplemente lo exponemos.
 | |
| EXPOSE 80
 | |
| 
 | |
| # El comando por defecto de la imagen de Nginx ya inicia el servidor.
 | |
| CMD ["nginx", "-g", "daemon off;"] |