Dockerfile 479 B

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