FROM node:20-alpine AS builder WORKDIR /app # Copy package files COPY package.json pnpm-lock.yaml ./ COPY packages/*/package.json ./packages/*/ COPY services/dataroom/package.json ./services/dataroom/ # Install pnpm RUN npm install -g pnpm # Install dependencies RUN pnpm install --frozen-lockfile # Copy source code COPY . . # Build RUN pnpm build --filter=@the-order/dataroom-service FROM node:20-alpine AS runner WORKDIR /app # Copy package files COPY package.json pnpm-lock.yaml ./ COPY packages/*/package.json ./packages/*/ COPY services/dataroom/package.json ./services/dataroom/ # Install pnpm RUN npm install -g pnpm # Install production dependencies RUN pnpm install --frozen-lockfile --prod # Copy built files COPY --from=builder /app/services/dataroom/dist ./services/dataroom/dist COPY --from=builder /app/packages ./packages WORKDIR /app/services/dataroom EXPOSE 4004 # Graceful shutdown signal handling STOPSIGNAL SIGTERM CMD ["node", "dist/index.js"]