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. |