From 3c033c2c4411cfc2ee93daa3b37b7014c57ab76f Mon Sep 17 00:00:00 2001 From: Kenio de Souza Date: Fri, 12 Sep 2025 13:34:23 -0300 Subject: [PATCH] feat(DockerFileNextConfig): Ajustando Dockerfile + next.config.ts --- Dockerfile | 32 +++++++++++++++----------------- next.config.ts | 3 ++- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2525d04..a87dcbb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,42 +1,40 @@ -# Etapa 1: Construir a aplicação +# 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 +# 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, incluindo as de desenvolvimento +# Instala as dependências do projeto RUN npm install -# Copia o restante do código da aplicação +# Copia todo o código da sua aplicação para o container COPY . . -# Constrói a aplicação com o output 'standalone' +# 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: Executar a aplicação -# Usa uma imagem Node.js leve +# 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 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' +# 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 os arquivos públicos +# Copia a pasta 'public' que contém assets estáticos 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 +# Define a porta que a aplicação irá expor 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 +# Comando para iniciar o servidor Next.js em produção +# O "server.js" é o servidor otimizado gerado no modo 'standalone' CMD ["node", "server.js"] \ No newline at end of file diff --git a/next.config.ts b/next.config.ts index e9ffa30..0a838ef 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,7 +1,8 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { - /* config options here */ + // Isso gera um diretório otimizado que inclui tudo o que a aplicação precisa para rodar + output: 'standalone', }; export default nextConfig;