FROM node:20-slim as builder WORKDIR /app COPY package*.json ./ COPY tsconfig.json ./ RUN npm ci COPY src/ ./src/ RUN npm run build FROM node:20-slim WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY --from=builder /app/dist ./dist RUN useradd -m -u 1000 aimds && chown -R aimds:aimds /app USER aimds HEALTHCHECK --interval=30s --timeout=3s CMD node -e "require('http').get('http://localhost:3000/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1));" EXPOSE 3000 9090 CMD ["node", "dist/index.js"]