Spaces:
Starting
Starting
Vanshik Waghela
feat: complete Phase 2 modules 9-11, fix ledger page SSR rendering, and implement voice note facts reconciliation
10f0b14 | # CourtMitra API β NestJS + Fastify on Alpine | |
| # Multi-stage: pnpm deploy creates flat prod node_modules. | |
| # ββ Stage 1: install + deploy βββββββββββββββββββββββββββββββββββββββββββββ | |
| FROM node:23-alpine AS builder | |
| RUN corepack enable && corepack prepare pnpm@10 --activate | |
| WORKDIR /app | |
| # Copy workspace manifests (dep-change cache layer) | |
| COPY pnpm-lock.yaml pnpm-workspace.yaml package.json tsconfig.base.json ./ | |
| COPY apps/api/package.json apps/api/ | |
| COPY packages/adapters/package.json packages/adapters/ | |
| COPY packages/contracts/package.json packages/contracts/ | |
| COPY packages/db/package.json packages/db/ | |
| COPY packages/domain/package.json packages/domain/ | |
| COPY packages/ports/package.json packages/ports/ | |
| COPY packages/prompts/package.json packages/prompts/ | |
| # Install all deps (needed for workspace resolution) | |
| RUN pnpm install --frozen-lockfile | |
| # Copy source | |
| COPY apps/api/src apps/api/src | |
| COPY packages/adapters/src packages/adapters/src | |
| COPY packages/contracts/src packages/contracts/src | |
| COPY packages/db/src packages/db/src | |
| COPY packages/domain/src packages/domain/src | |
| COPY packages/ports/src packages/ports/src | |
| COPY packages/prompts/src packages/prompts/src | |
| COPY packages/db/drizzle.config.ts packages/db/drizzle.config.ts | |
| COPY apps/api/tsconfig.json apps/api/tsconfig.json | |
| # Deploy: flat, standalone production copy | |
| RUN pnpm --filter @courtmitra/api deploy --prod --legacy /deploy | |
| # Remove leaked workspace-wide packages that aren't API dependencies | |
| # Keep esbuild (needed by tsx at runtime) | |
| RUN rm -rf /deploy/node_modules/.pnpm/next@* \ | |
| /deploy/node_modules/.pnpm/@next+* \ | |
| /deploy/node_modules/.pnpm/typescript@* \ | |
| /deploy/node_modules/.pnpm/caniuse-lite@* \ | |
| /deploy/node_modules/.pnpm/react@* \ | |
| /deploy/node_modules/.pnpm/react-dom@* \ | |
| /deploy/node_modules/.pnpm/web-streams-polyfill@* | |
| # ββ Stage 2: runtime ββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| FROM node:23-alpine AS runner | |
| RUN apk add --no-cache tini | |
| WORKDIR /app | |
| # Copy the deployed app (flat node_modules, no pnpm tooling) | |
| COPY --from=builder /deploy ./ | |
| EXPOSE 3001 | |
| ENTRYPOINT ["/sbin/tini", "--"] | |
| CMD ["npx", "tsx", "src/main.ts"] | |