# syntax=docker/dockerfile:1.7 FROM node:24-alpine AS dependencies WORKDIR /app COPY package*.json ./ RUN npm ci FROM dependencies AS build COPY tsconfig.json ./ COPY src ./src RUN npm run build FROM node:24-alpine AS runtime WORKDIR /app ENV NODE_ENV=production \ API_HOST=0.0.0.0 \ API_PORT=3000 COPY package*.json ./ RUN npm ci --omit=dev && npm cache clean --force COPY --from=build /app/dist ./dist COPY migrations ./migrations COPY scripts ./scripts EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ CMD node -e "fetch('http://127.0.0.1:' + (process.env.API_PORT || 3000) + '/auth/session').then(response => process.exit(response.ok ? 0 : 1)).catch(() => process.exit(1))" CMD ["node", "dist/src/server.js"]