47 lines
1.1 KiB
Docker
47 lines
1.1 KiB
Docker
# ============================
|
||
# STAGE 1 – Build da aplicação
|
||
# ============================
|
||
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
|
||
RUN npm ci
|
||
|
||
# Copia todo o código da aplicação
|
||
COPY . .
|
||
|
||
# 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"]
|