FROM node:22-bookworm-slim AS deps WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci --omit=dev --no-audit --no-fund FROM node:22-bookworm-slim WORKDIR /app ENV NODE_ENV=production ARG GIT_BRANCH=unknown ARG BUILD_TIME=unknown ENV GIT_BRANCH=$GIT_BRANCH ENV BUILD_TIME=$BUILD_TIME COPY --from=deps /app/node_modules ./node_modules COPY package.json ./ COPY src ./src COPY public ./public VOLUME ["/app/data"] EXPOSE 3000 USER node HEALTHCHECK --interval=30s --timeout=5s --start-period=15s \ CMD node -e "fetch('http://localhost:3000/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))" CMD ["node", "src/index.js"]