ORdenar archivos de PRod

This commit is contained in:
2025-11-18 17:35:32 -03:00
parent 443de4ec0e
commit bc4721737c
7 changed files with 427 additions and 2 deletions

34
frontend/Dockerfile.prod Normal file
View File

@@ -0,0 +1,34 @@
FROM node:18-alpine AS builder
WORKDIR /app
# Copiar package files
COPY package*.json ./
# Instalar todas las dependencias (necesitamos las dev para el build)
RUN npm install
# Copiar código
COPY . .
# Build argument para la URL de la API
ARG VITE_API_URL
ENV VITE_API_URL=$VITE_API_URL
# Construir la aplicación
RUN npm run build
# Etapa de producción con Nginx
FROM nginx:alpine
# Copiar archivos construidos
COPY --from=builder /app/dist /usr/share/nginx/html
# Copiar configuración de nginx
COPY nginx.conf /etc/nginx/conf.d/default.conf
# Exponer puerto 80
EXPOSE 80
# Comando para iniciar nginx
CMD ["nginx", "-g", "daemon off;"]

36
frontend/nginx.conf Normal file
View File

@@ -0,0 +1,36 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
# Gzip compression
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/json application/javascript;
# SPA routing - todas las rutas van a index.html
location / {
try_files $uri $uri/ /index.html;
}
# Cache para assets estáticos
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# No cache para index.html
location = /index.html {
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires 0;
}
# Security headers
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
}