# ======================================== # Stage 1: Builder - Instalar deps e build # ======================================== FROM node:20-alpine AS builder WORKDIR /app # Copiar package files COPY package.json package-lock.json ./ # Instalar dependências (incluindo devDependencies para build) RUN npm ci # Copiar código fonte COPY . . # Variáveis de ambiente hardcoded para build do Next.js # Frontend - Variáveis Públicas ENV NEXT_PUBLIC_SITE_URL=https://portal.automatizase.com.br ENV NEXT_PUBLIC_SUPABASE_URL=https://supabase.automatizase.com.br ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlIiwiaWF0IjoxNzU5NTI0OTkwLCJleHAiOjIwNzQ4ODQ5OTB9.vAXVcWzQESACqlP6UCw2_8EwQRFTRZFfLW47xRrd23o ENV NEXT_PUBLIC_GOOGLE_CLIENT_ID=174466774807-tdsht53agf7v40suk5mmqgmfrn4iskck.apps.googleusercontent.com # Backend - Variáveis Privadas ENV SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoic2VydmljZV9yb2xlIiwiaXNzIjoic3VwYWJhc2UiLCJpYXQiOjE3NTk1MjQ5OTAsImV4cCI6MjA3NDg4NDk5MH0.rkZfAs65vTceDDxWBdencfBtMH22l5ix_XPqltCk5j4 ENV GOOGLE_CLIENT_SECRET=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 # EvolutionAPI Configuration ENV EVOLUTION_API_URL=https://evolutionapi.automatizase.com.br ENV EVOLUTION_API_KEY=03919932dcb10fee6f28b1f1013b304c ENV EVOLUTION_INSTANCE_NAMES="Rita,Lucia Refugio" # n8n Configuration ENV N8N_API_URL=https://n8n.automatizase.com.br/api/v1 ENV N8N_API_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI4NjNjYjM1MC1hZGY3LTRiZGMtYWRlNi01OGRmYWYyNmNmYjYiLCJpc3MiOiJuOG4iLCJhdWQiOiJwdWJsaWMtYXBpIiwiaWF0IjoxNzYwMjk5MjQ1fQ.pj94fvK9fI181NsGr65Orvp4iiO19qU9D_-vVRUkPbw ENV N8N_OAUTH_URL=https://n8n.automatizase.com.br/webhook/google-oauth # Build da aplicação Next.js RUN npm run build # ======================================== # Stage 2: Runner - Imagem final otimizada # ======================================== FROM node:20-alpine AS runner WORKDIR /app # Criar usuário não-root para segurança RUN addgroup --system --gid 1001 nodejs && \ adduser --system --uid 1001 nextjs # Copiar build standalone do Next.js (já contém as dependências necessárias) COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static COPY --from=builder --chown=nextjs:nodejs /app/public ./public # Trocar para usuário não-root USER nextjs # Expor porta 3100 (customizada conforme requisito) EXPOSE 3100 # Variáveis de ambiente para runtime ENV PORT=3100 ENV HOSTNAME="0.0.0.0" ENV NEXT_PUBLIC_SITE_URL=https://portal.automatizase.com.br ENV NEXT_PUBLIC_SUPABASE_URL=https://supabase.automatizase.com.br ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlzcyI6InN1cGFiYXNlIiwiaWF0IjoxNzU5NTI0OTkwLCJleHAiOjIwNzQ4ODQ5OTB9.vAXVcWzQESACqlP6UCw2_8EwQRFTRZFfLW47xRrd23o ENV NEXT_PUBLIC_GOOGLE_CLIENT_ID=174466774807-tdsht53agf7v40suk5mmqgmfrn4iskck.apps.googleusercontent.com ENV SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoic2VydmljZV9yb2xlIiwiaXNzIjoic3VwYWJhc2UiLCJpYXQiOjE3NTk1MjQ5OTAsImV4cCI6MjA3NDg4NDk5MH0.rkZfAs65vTceDDxWBdencfBtMH22l5ix_XPqltCk5j4 ENV GOOGLE_CLIENT_SECRET=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 ENV EVOLUTION_API_URL=https://evolutionapi.automatizase.com.br ENV EVOLUTION_API_KEY=03919932dcb10fee6f28b1f1013b304c ENV EVOLUTION_INSTANCE_NAMES="Rita,Lucia Refugio" ENV N8N_API_URL=https://n8n.automatizase.com.br/api/v1 ENV N8N_API_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI4NjNjYjM1MC1hZGY3LTRiZGMtYWRlNi01OGRmYWYyNmNmYjYiLCJpc3MiOiJuOG4iLCJhdWQiOiJwdWJsaWMtYXBpIiwiaWF0IjoxNzYwMjk5MjQ1fQ.pj94fvK9fI181NsGr65Orvp4iiO19qU9D_-vVRUkPbw ENV N8N_OAUTH_URL=https://n8n.automatizase.com.br/webhook/google-oauth # Labels para rastreabilidade LABEL org.opencontainers.image.title="AutomatizaSE Portal" LABEL org.opencontainers.image.description="Portal de Automação AutomatizaSE" LABEL org.opencontainers.image.vendor="AutomatizaSE" # Comando de produção CMD ["node", "server.js"]