Dockerfile 586 B

1234567891011121314151617181920212223242526272829
  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 scripts ./scripts
  8. COPY public ./public
  9. RUN mkdir -p /data && chown -R node:node /data /app
  10. USER node
  11. EXPOSE 3000
  12. EXPOSE 25
  13. EXPOSE 465
  14. EXPOSE 587
  15. EXPOSE 2525
  16. EXPOSE 110
  17. EXPOSE 143
  18. EXPOSE 993
  19. EXPOSE 995
  20. VOLUME ["/data"]
  21. HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
  22. CMD node -e "fetch('http://127.0.0.1:3000/healthz').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
  23. CMD ["node", "src/server.js"]