This commit is contained in:
Keven 2025-12-09 15:19:43 -03:00
parent 26f0016813
commit 7a2305c918

View file

@ -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"]