diff --git a/Dockerfile b/Dockerfile index 586a1cf..3e0376f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,49 +3,41 @@ # ============================ FROM node:20-alpine AS builder -# Define diretório de trabalho WORKDIR /app -# Copia os arquivos de dependência COPY package*.json ./ - -# Instala dependências (usando cache eficiente) RUN npm ci -# Copia o restante do código COPY . . -# Garante o ambiente de produção durante o build +# Garante build de produção ENV NODE_ENV=production - -# Gera o build de produção RUN npm run build # ============================= -# STAGE 2 – Imagem de Produção +# STAGE 2 – Produção (Runner) # ============================= FROM node:20-alpine AS runner -# Define o ambiente de produção explicitamente +WORKDIR /app + +# Força modo produção ENV NODE_ENV=production ENV NEXT_TELEMETRY_DISABLED=1 -# Cria diretório da aplicação -WORKDIR /app - -# Copia apenas o necessário da build -COPY --from=builder /app/package*.json ./ -COPY --from=builder /app/.next ./.next +# 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 -# Usuário não-root por segurança +# Segurança: executa como usuário não-root RUN addgroup -S nodejs && adduser -S nextjs -G nodejs USER nextjs -# Expõe a porta padrão do Next.js +# Porta padrão EXPOSE 3000 -# Força o modo produção, mesmo que o painel envie NODE_ENV errado +# Comando fixo (força produção) CMD ["sh", "-c", "NODE_ENV=production npm start"] diff --git a/package.json b/package.json index 0a92c08..fac3244 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "dev": "next dev --turbopack", "build": "next build", - "start": "next start -p 3000", + "start": "next start", "lint": "next lint" }, "dependencies": {