diff --git a/Dockerfile b/Dockerfile index f8628f0..3e0376f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,43 @@ # ============================ -# STAGE ÚNICO – Desenvolvimento +# STAGE 1 – Build da aplicação # ============================ -FROM node:20-alpine +FROM node:20-alpine AS builder -# Diretório de trabalho WORKDIR /app -# Copia os arquivos de dependência COPY package*.json ./ +RUN npm ci -# Instala dependências (mantém cache eficiente) -RUN npm install - -# Copia todo o código do projeto COPY . . -# Define variáveis de ambiente de desenvolvimento -ENV NODE_ENV=development -ENV NEXT_TELEMETRY_DISABLED=1 -ENV WATCHPACK_POLLING=true +# Garante build de produção +ENV NODE_ENV=production +RUN npm run build -# Expõe a porta padrão do Next.js +# ============================= +# STAGE 2 – Produção (Runner) +# ============================= +FROM node:20-alpine AS runner + +WORKDIR /app + +# Força modo produção +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 + +# Copia somente o necessário +COPY --from=builder /app/public ./public +COPY --from=builder /app/.next ./.next +COPY --from=builder /app/package*.json ./ +COPY --from=builder /app/next.config.* ./ +COPY --from=builder /app/node_modules ./node_modules + +# Segurança: executa como usuário não-root +RUN addgroup -S nodejs && adduser -S nextjs -G nodejs +USER nextjs + +# Porta padrão EXPOSE 3000 -# Executa o servidor de desenvolvimento com hot reload -CMD ["npm", "run", "dev"] +# Comando fixo (força produção) +CMD ["sh", "-c", "NODE_ENV=production npm start"]