40 lines
No EOL
1.3 KiB
Docker
40 lines
No EOL
1.3 KiB
Docker
# 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"] |