From c82cb2642b15dc434ecac509c3f2bc6e481a53cc Mon Sep 17 00:00:00 2001 From: wander Date: Fri, 21 Nov 2025 22:23:20 +0000 Subject: [PATCH] Atualizar Dockerfile --- Dockerfile | 62 ++++++++++++++++++------------------------------------ 1 file changed, 21 insertions(+), 41 deletions(-) diff --git a/Dockerfile b/Dockerfile index 3efa28f..f612eb6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,55 +1,35 @@ -# Etapa 1 - extrair e buildar a aplicação -FROM node:18 AS build +# Etapa 1: build da aplicação +FROM node:20-alpine AS builder +# Diretório de trabalho dentro do container WORKDIR /app -# Copiar e descompactar o ZIP do repositório -COPY app.zip /app/ -RUN apt-get update && apt-get install -y unzip && \ - unzip app.zip -d . && \ - rm app.zip +# Precisamos do unzip para descompactar o .zip +RUN apk add --no-cache unzip -# Instalar dependências e buildar o projeto -RUN npm install && npm run build +# 1) Copiar o .zip para dentro da imagem +COPY app.zip . -# Etapa 2 - imagem final com nginx -FROM nginx:alpine +# 2) Descompactar o .zip e remover o arquivo +RUN unzip app.zip && rm app.zip -# Configuração customizada do nginx para SPA -RUN cat <<'EOF' > /etc/nginx/conf.d/default.conf -server { - listen 80; - server_name _; - root /usr/share/nginx/html; - index index.html; +# 3) Instalar dependências (usando npm install, pois não existe script "install") +RUN npm install - 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/javascript application/json; +# 4) Build da aplicação (Vite gera a pasta dist/) +RUN npm run build - location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)$ { - expires 1y; - add_header Cache-Control "public, immutable"; - } +# Etapa 2: imagem final somente com arquivos estáticos +FROM nginx:alpine AS runner - location / { - try_files $uri $uri/ /index.html; - } +# Remover configuração default do nginx (opcional, mas limpo) +RUN rm -rf /usr/share/nginx/html/* - location ~ /\. { - deny all; - } -} -EOF - -# Copiar os arquivos construídos para o diretório público do nginx -COPY --from=build /app/dist /usr/share/nginx/html - -# Remover arquivo default se existir (evita sobrescrever a index.html do build) -RUN rm -f /usr/share/nginx/html/index.html.orig 2>/dev/null || true +# Copiar o build estático gerado pelo Vite para o nginx +COPY --from=builder /app/dist /usr/share/nginx/html +# Expor porta padrão do nginx EXPOSE 80 +# Comando padrão do nginx CMD ["nginx", "-g", "daemon off;"] -