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"]

