Dockerfile 519 B

123456789101112131415161718192021222324
  1. FROM node:24-bookworm-slim
  2. WORKDIR /app
  3. ENV NODE_ENV=production
  4. COPY package.json package-lock.json ./
  5. RUN npm ci --omit=dev
  6. COPY src ./src
  7. COPY public ./public
  8. RUN mkdir -p /data && chown -R node:node /data /app
  9. USER node
  10. EXPOSE 3000
  11. EXPOSE 25
  12. EXPOSE 465
  13. EXPOSE 587
  14. EXPOSE 2525
  15. VOLUME ["/data"]
  16. HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
  17. CMD node -e "fetch('http://127.0.0.1:3000/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
  18. CMD ["node", "src/server.js"]