FROM node:20-alpine AS builder WORKDIR /app # Copy package files COPY package.json pnpm-lock.yaml ./ COPY packages/*/package.json ./packages/*/ COPY services/intake/package.json ./services/intake/ # 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/intake-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/intake/package.json ./services/intake/ # Install pnpm RUN npm install -g pnpm # Install production dependencies RUN pnpm install --frozen-lockfile --prod # Copy built files COPY --from=builder /app/services/intake/dist ./services/intake/dist COPY --from=builder /app/packages ./packages WORKDIR /app/services/intake EXPOSE 4001 # Graceful shutdown signal handling STOPSIGNAL SIGTERM CMD ["node", "dist/index.js"]