# Etapa 1: Construir a aplicação FROM node:20-alpine AS builder # Define o diretório de trabalho WORKDIR /app # Copia os arquivos de configuração do pacote COPY package.json package-lock.json ./ # Instala as dependências do projeto RUN npm install # Copia todo o código da aplicação para o container COPY . . # Constrói a aplicação com o output 'standalone' RUN npm run build # Etapa 2: Executar a aplicação # Usa uma imagem Node.js leve FROM node:20-alpine AS runner # Define o diretório de trabalho WORKDIR /app # Copia o diretório 'standalone' da etapa de build, que já contém o servidor e as dependências # O diretório 'standalone' é a pasta .next/standalone gerada pela configuração 'output: standalone' COPY --from=builder /app/.next/standalone ./ # Copia os arquivos públicos COPY --from=builder /app/public ./public # Copia os arquivos estáticos gerados pelo build. É aqui que os arquivos CSS e JS ficam. COPY --from=builder /app/.next/static ./.next/static # Expõe a porta padrão do Next.js EXPOSE 3000 # Define o comando para iniciar a aplicação # O 'start' do package.json não é necessário, o próprio servidor standalone já está no container CMD ["node", "server.js"]