diff --git a/Dockerfile b/Dockerfile index bbaca32..2525d04 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,38 +1,42 @@ -# Etapa 1: Construir a aplicação Next.js -# Use uma imagem Node.js leve como base +# Etapa 1: Construir a aplicação FROM node:20-alpine AS builder -# Defina o diretório de trabalho +# Define o diretório de trabalho WORKDIR /app -# Copie o package.json e o package-lock.json (ou yarn.lock) -COPY package*.json ./ +# Copia os arquivos de configuração do pacote +COPY package.json package-lock.json ./ -# Instale as dependências do projeto +# Instala as dependências, incluindo as de desenvolvimento RUN npm install -# Copie o restante do código fonte da aplicação +# Copia o restante do código da aplicação COPY . . -# Construa a aplicação Next.js para produção +# Constrói a aplicação com o output 'standalone' RUN npm run build -# Etapa 2: Executar a aplicação Next.js -# Use uma imagem Node.js mais leve para a execução +# Etapa 2: Executar a aplicação +# Usa uma imagem Node.js leve FROM node:20-alpine AS runner -# Defina o diretório de trabalho +# Define o diretório de trabalho WORKDIR /app -# Copie os artefatos de build da etapa anterior -COPY --from=builder /app/.next ./.next -COPY --from=builder /app/node_modules ./node_modules -COPY --from=builder /app/package.json ./package.json -COPY --from=builder /app/public ./public -COPY --from=builder /app/.env ./.env # Copie variáveis de ambiente, se necessário +# 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 ./ -# Expõe a porta em que a aplicação Next.js será executada (padrão é 3000) +# 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 -# Comando para iniciar a aplicação em modo de produção -CMD ["npm", "start"] \ No newline at end of file +# 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"] \ No newline at end of file