# Dockerfile # Stage 1: Build the application FROM docker.io/library/node:20-alpine AS builder WORKDIR /app COPY package.json package-lock.json* ./ RUN npm install COPY tsconfig.json ./ COPY src ./src RUN npm run build # Stage 2: Install production dependencies FROM docker.io/library/node:20-alpine AS prod-deps WORKDIR /app COPY package.json package-lock.json* ./ RUN npm install --omit=dev # Stage 3: Run the application FROM gcr.io/distroless/nodejs20-debian12 WORKDIR /app ENV NODE_ENV=production COPY --from=prod-deps /app/node_modules ./node_modules COPY --from=builder /app/dist ./dist EXPOSE 4000 CMD ["dist/main.js"]