# 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: production deps only (node-pg-migrate is a prod dep so # `npm run migrate` works inside this image for the PreSync Job). FROM node:22-slim WORKDIR /app ENV NODE_ENV=production ARG GIT_SHA=dev ENV GIT_SHA=${GIT_SHA} COPY package.json package-lock.json ./ RUN npm ci --omit=dev COPY --from=build /app/dist ./dist COPY migrations ./migrations USER node EXPOSE 3000 CMD ["node", "dist/bin/server.js"]