# apps/api — NestJS (Fastify), monorepo pnpm. FROM node:24-slim AS build # Prisma precisa do OpenSSL para detectar corretamente o engine binário a # baixar — a imagem "slim" não vem com ele. RUN apt-get update && apt-get install -y --no-install-recommends openssl ca-certificates && rm -rf /var/lib/apt/lists/* RUN corepack enable && corepack prepare pnpm@11.24.0 --activate WORKDIR /app # Copia primeiro só os manifests para aproveitar cache de layer no `pnpm # install` — reinstalar tudo só quando dependências mudam, não a cada # alteração de código-fonte. COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./ COPY apps/api/package.json apps/api/package.json COPY packages/database/package.json packages/database/package.json COPY packages/shared/package.json packages/shared/package.json RUN pnpm install --frozen-lockfile COPY packages/shared packages/shared COPY packages/database packages/database COPY apps/api apps/api RUN pnpm --filter @b2bcall/shared build \ && pnpm --filter @b2bcall/database build \ && pnpm --filter @b2bcall/api build # --- runtime ------------------------------------------------------------- FROM node:24-slim AS runtime ENV NODE_ENV=production WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends openssl ca-certificates && rm -rf /var/lib/apt/lists/* \ && groupadd -r b2bcall && useradd -r -g b2bcall b2bcall COPY --from=build /app /app USER b2bcall EXPOSE 3000 CMD ["node", "apps/api/dist/main.js"]