diff --git a/Dockerfile b/Dockerfile index e96e9be..358ba31 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,47 @@ -# ============================== -# STAGE 1: Build da aplicação -# ============================== +# ============================ +# STAGE 1 – Build da aplicação +# ============================ FROM node:20-alpine AS builder + +# Define diretório de trabalho WORKDIR /app -ENV NODE_ENV=production -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 os arquivos de dependência +COPY package*.json ./ -# Copia e instala dependências completas (inclui devDependencies) -COPY package.json package-lock.json ./ -RUN npm ci --legacy-peer-deps +# Instala dependências +RUN npm ci -# Copia o código +# Copia todo o código da aplicação COPY . . -# Compila aplicação Next.js -RUN npm run build -- --no-lint +# Gera o build de produção +RUN npm run build + +# ============================= +# STAGE 2 – Imagem de Produção +# ============================= +FROM node:20-alpine AS runner + +# Define o ambiente +ENV NODE_ENV=production + +# Cria diretório da aplicação +WORKDIR /app + +# Copia apenas os arquivos necessários do build anterior +COPY --from=builder /app/package*.json ./ +COPY --from=builder /app/.next ./.next +COPY --from=builder /app/public ./public +COPY --from=builder /app/next.config.* ./ +COPY --from=builder /app/node_modules ./node_modules + +# Define usuário não-root por segurança +RUN addgroup -S nodejs && adduser -S nextjs -G nodejs +USER nextjs + +# Porta padrão do Next.js (pode ser alterada via variável) +EXPOSE 3000 + +# Comando para rodar a aplicação +CMD ["npm", "start"]