Dockerfile 542 B

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