# Etapa 1: Construção da aplicação # Use uma imagem Node.js completa para instalar as dependências e construir a aplicação FROM node:20-alpine AS builder # Define o diretório de trabalho dentro do container 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 sua aplicação para o container COPY . . # Executa o comando de build do Next.js. O "output: 'standalone'" garante que os arquivos # necessários para o servidor de produção sejam gerados em um diretório específico. RUN npm run build # Etapa 2: Execução da aplicação # Use uma imagem Node.js minimalista para o ambiente de produção FROM node:20-alpine AS runner # Define o diretório de trabalho WORKDIR /app # Copia a pasta "standalone" gerada na etapa de build, # que contém o servidor, as dependências e os arquivos compilados COPY --from=builder /app/.next/standalone ./ # Copia a pasta 'public' que contém assets estáticos COPY --from=builder /app/public ./public # Define a porta que a aplicação irá expor EXPOSE 3000 # Comando para iniciar o servidor Next.js em produção # O "server.js" é o servidor otimizado gerado no modo 'standalone' CMD ["node", "server.js"]