diff --git a/Dockerfile b/Dockerfile index bff0d83..9ec81ad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,44 +1,48 @@ # ============================== # STAGE 1: Build da aplicação # ============================== -FROM node:20-alpine AS builder +FROM node:18-alpine AS builder +# Define o diretório de trabalho WORKDIR /app -# Copia apenas arquivos de configuração do projeto (para cache eficiente) +# Copia apenas arquivos de dependência primeiro (para cache eficiente) COPY package.json package-lock.json ./ -RUN npm ci --legacy-peer-deps +# Instala TODAS as dependências (inclui devDependencies para build) +RUN npm ci --include=dev --legacy-peer-deps -# Copia o restante do código +# Copia o restante do código-fonte COPY . . -# Garante que o arquivo de configuração exista e cria fallback se necessário +# 🔧 Garante que o arquivo de configuração exista (fallback seguro) RUN mkdir -p src/config && \ if [ ! -f src/config/app.json ]; then \ echo '{ "APP_NAME": "Orius SaaS", "API_URL": "https://api.oriustecnologia.com" }' > src/config/app.json; \ fi +# Define ambiente de produção ENV NODE_ENV=production -# Gera o build otimizado do Next.js -RUN npm run build +# Gera o build otimizado do Next.js (sem lint) +RUN npm run build -- --no-lint # ============================== # STAGE 2: Imagem final (produção) # ============================== -FROM node:20-alpine AS runner +FROM node:18-alpine AS runner +# Define o diretório de trabalho WORKDIR /app -# Copia apenas o necessário do build +# Copia apenas os artefatos necessários do build COPY --from=builder /app/.next/standalone ./ COPY --from=builder /app/.next/static ./.next/static COPY --from=builder /app/public ./public COPY --from=builder /app/src/config ./src/config COPY --from=builder /app/package.json ./package.json -# Define variáveis de ambiente padrão +# Define variáveis de ambiente ENV NODE_ENV=production ENV PORT=3000 ENV HOSTNAME=0.0.0.0 @@ -47,7 +51,8 @@ ENV HOSTNAME=0.0.0.0 RUN addgroup -g 1001 nodejs && adduser -u 1001 -G nodejs -s /bin/sh -D nodejs USER nodejs +# Expõe a porta padrão do Next.js EXPOSE 3000 -# Inicia o servidor +# Inicia o servidor standalone do Next.js CMD ["node", "server.js"] diff --git a/next.config.ts b/next.config.ts index 0ef2744..25e0b49 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,12 +1,12 @@ -import type { NextConfig } from 'next'; - -const nextConfig: NextConfig = { - // Isso gera um diretório otimizado que inclui tudo o que a aplicação precisa para rodar +const nextConfig = { output: 'standalone', + experimental: { runtime: 'nodejs' }, + reactStrictMode: true, + poweredByHeader: false, + compress: true, + swcMinify: true, eslint: { - // Desativa a verificação de lint durante o build ignoreDuringBuilds: true, }, }; - -export default nextConfig; +module.exports = nextConfig;