# ============================================================================= # GoHorse Backoffice - Ultra-Optimized Dockerfile # ============================================================================= FROM mirror.gcr.io/library/node:20-alpine AS base # Configurações básicas e pnpm RUN corepack enable && corepack prepare pnpm@latest --activate RUN apk add --no-cache libc6-compat ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" # ----------------------------------------------------------------------------- # Stage 1: Dependencies (Instalação real aqui) # ----------------------------------------------------------------------------- FROM base AS deps WORKDIR /app # Copia apenas os arquivos de definição COPY package.json pnpm-lock.yaml ./ # Instalamos as dependências de forma clássica (sem --mount para não quebrar no Drone) RUN pnpm install --frozen-lockfile # ----------------------------------------------------------------------------- # Stage 2: Builder # ----------------------------------------------------------------------------- FROM base AS builder WORKDIR /app ENV NODE_OPTIONS="--max-old-space-size=2048" # Copia os módulos instalados no estágio anterior COPY --from=deps /app/node_modules ./node_modules COPY . . # Build e limpeza de cache local do build RUN pnpm build && \ rm -rf node_modules/.cache # Remove dependências de desenvolvimento para diminuir a imagem final # Removido --mount para compatibilidade com seu ambiente RUN pnpm prune --prod # ----------------------------------------------------------------------------- # Stage 3: Production (Imagem Final Leve) # ----------------------------------------------------------------------------- FROM mirror.gcr.io/library/node:20-alpine AS runner RUN addgroup -g 1001 -S nodejs && \ adduser -S nestjs -u 1001 -G nodejs WORKDIR /app # Copia apenas o necessário do estágio de build COPY --from=builder --chown=nestjs:nodejs /app/dist ./dist COPY --from=builder --chown=nestjs:nodejs /app/node_modules ./node_modules COPY --from=builder --chown=nestjs:nodejs /app/package.json ./ ENV NODE_ENV=production \ BACKOFFICE_PORT=3001 \ BACKOFFICE_HOST=0.0.0.0 USER nestjs EXPOSE 3001 CMD ["node", "dist/main.js"]