From 60dce3876a2887e61417fb7bc691c7b8d14203c1 Mon Sep 17 00:00:00 2001 From: Keven Date: Tue, 9 Dec 2025 12:45:20 -0300 Subject: [PATCH] fix(Dockerfile): Ajusta o dockerfile --- Dockerfile | 56 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6edcd97..cae3709 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,52 @@ -# Use uma imagem Node.js completa para o desenvolvimento -FROM node:20-alpine +# ============================== +# STAGE 1: Build da aplicação +# ============================== +FROM node:20-alpine AS builder -# Define o diretório de trabalho no container WORKDIR /app -# Copia os arquivos de configuração do projeto +# Configuração de proxy (opcional) +ARG HTTP_PROXY +ARG HTTPS_PROXY +ENV NPM_CONFIG_HTTP_PROXY=$HTTP_PROXY +ENV NPM_CONFIG_HTTPS_PROXY=$HTTPS_PROXY +ENV NPM_CONFIG_TIMEOUT=600000 + +# Copia arquivos de dependências e instala COPY package.json package-lock.json ./ +RUN npm ci --include=dev --legacy-peer-deps -# Instala todas as dependências do projeto -# Isso é necessário para o modo de desenvolvimento, pois o build não pré-compila os arquivos. -RUN npm install - -# Copia o restante do código da sua aplicação +# Copia todo o código do projeto COPY . . -# Expõe a porta de desenvolvimento padrão do Next.js +# Define ambiente e compila sem criar arquivos adicionais +ENV NODE_ENV=production +RUN npm run build -- --no-lint + +# ============================== +# STAGE 2: Imagem final (produção) +# ============================== +FROM node:20-alpine AS runner +WORKDIR /app + +# Instala ferramentas básicas +RUN apk add --no-cache nano curl + +# Cria usuário não-root +RUN addgroup -g 1001 nodejs && adduser -u 1001 -G nodejs -s /bin/sh -D nodejs + +# Copia apenas o necessário da build +COPY --from=builder --chown=nodejs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nodejs:nodejs /app/.next/static ./.next/static +COPY --from=builder --chown=nodejs:nodejs /app/public ./public +COPY --from=builder --chown=nodejs:nodejs /app/src/config ./src/config + +USER nodejs + +ENV NODE_ENV=production +ENV PORT=3000 +ENV HOSTNAME=0.0.0.0 + EXPOSE 3000 -# Define o comando para iniciar a aplicação em modo de desenvolvimento -# Isso ativará o servidor de desenvolvimento e a recarga automática -CMD ["npm", "run", "dev"] +CMD ["node", "server.js"]