Dockerfile 563 B

12345678910111213141516171819202122232425262728
  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. EXPOSE 110
  16. EXPOSE 143
  17. EXPOSE 993
  18. EXPOSE 995
  19. VOLUME ["/data"]
  20. HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
  21. CMD node -e "fetch('http://127.0.0.1:3000/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
  22. CMD ["node", "src/server.js"]