feat(Dockerfile): Nova criação do Dockerfile

This commit is contained in:
Kenio 2025-09-12 13:23:12 -03:00
parent affa2bc213
commit cb066a514b

View file

@ -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"]
# 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"]