# Build stage: full toolchain, compile TS -> dist/ FROM node:22 AS build WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci COPY tsconfig.json ./ COPY src ./src RUN npm run build # Runtime stage: no dev deps (this service has zero runtime deps) FROM node:22-slim WORKDIR /app ENV NODE_ENV=production ARG GIT_SHA=dev ENV GIT_SHA=${GIT_SHA} COPY --from=build /app/dist ./dist COPY package.json ./ USER node EXPOSE 3000 CMD ["node", "dist/index.js"]