FROM node:20-bookworm-slim AS base # Prisma needs OpenSSL; curl is used by HEALTHCHECK below. RUN apt-get update -y && apt-get install -y openssl postgresql-client curl && rm -rf /var/lib/apt/lists/* # Install pnpm RUN npm install -g pnpm@9.14.2 WORKDIR /app # Copy workspace manifests COPY package.json pnpm-workspace.yaml pnpm-lock.yaml ./ COPY tooling/ ./tooling/ COPY packages/shared/package.json ./packages/shared/ COPY packages/db/package.json ./packages/db/ COPY packages/engine/package.json ./packages/engine/ COPY packages/staffing/package.json ./packages/staffing/ COPY packages/application/package.json ./packages/application/ COPY packages/api/package.json ./packages/api/ COPY apps/web/package.json ./apps/web/ # Install dependencies RUN pnpm install --frozen-lockfile # Copy all sources COPY . . # Generate Prisma client RUN pnpm --filter @capakraken/db db:generate EXPOSE 3100 HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \ CMD curl -fsS http://localhost:3100/api/health || exit 1 CMD ["sh", "./tooling/docker/app-dev-start.sh"]