FROM node:24-bookworm-slim ENV NODE_ENV=production \ PORT=3000 \ DATA_DIR=/app/data WORKDIR /app COPY package*.json ./ RUN npm ci --omit=dev --no-audit --no-fund COPY --chown=node:node public ./public COPY --chown=node:node src ./src RUN mkdir -p /app/data && chown node:node /app/data USER node EXPOSE 3000 HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ CMD node -e "fetch('http://127.0.0.1:3000/health').then(r => { if (!r.ok) process.exit(1) }).catch(() => process.exit(1))" CMD ["node", "src/server.mjs"]