# 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, incluindo as de desenvolvimento RUN npm install # Copia o restante do código da aplicação 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 # Define variáveis de ambiente, se necessário. # Por exemplo, se precisar de uma variável NEXT_PUBLIC_API_URL # ENV NEXT_PUBLIC_API_URL=https://api.meuapp.com # 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"]