gohorsejobs/backoffice/Dockerfile
2026-01-06 20:41:16 -03:00

67 lines
No EOL
2.2 KiB
Docker

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