FROM node:20-alpine AS builder WORKDIR /app # Install dependencies COPY package.json package-lock.json* ./ RUN npm ci # Copy source COPY tsconfig.json ./ COPY src/ ./src/ # Build RUN npm run build # Production image FROM node:20-alpine WORKDIR /app # Install dependencies COPY package.json package-lock.json* ./ RUN npm ci --production # Copy built files COPY --from=builder /app/dist ./dist # Install atos for iOS symbolication (if needed) RUN apk add --no-cache binutils EXPOSE 3000 CMD ["node", "dist/index.js"]