Dockerfile 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. ##
  2. # Send
  3. #
  4. # License https://gitlab.com/timvisee/send/blob/master/LICENSE
  5. ##
  6. # Build project
  7. FROM node:16.13-alpine3.13 AS builder
  8. RUN set -x \
  9. # Add user
  10. && addgroup --gid 10001 app \
  11. && adduser --disabled-password \
  12. --gecos '' \
  13. --ingroup app \
  14. --home /app \
  15. --uid 10001 \
  16. app
  17. COPY --chown=app:app . /app
  18. USER app
  19. WORKDIR /app
  20. RUN set -x \
  21. # Build
  22. && PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm ci \
  23. && npm run build
  24. # Main image
  25. FROM node:16.13-alpine3.13
  26. RUN set -x \
  27. # Add user
  28. && addgroup --gid 10001 app \
  29. && adduser --disabled-password \
  30. --gecos '' \
  31. --ingroup app \
  32. --home /app \
  33. --uid 10001 \
  34. app
  35. USER app
  36. WORKDIR /app
  37. COPY --chown=app:app package*.json ./
  38. COPY --chown=app:app app app
  39. COPY --chown=app:app common common
  40. COPY --chown=app:app public/locales public/locales
  41. COPY --chown=app:app server server
  42. COPY --chown=app:app --from=builder /app/dist dist
  43. RUN npm ci --production && npm cache clean --force
  44. RUN mkdir -p /app/.config/configstore
  45. RUN ln -s dist/version.json version.json
  46. ENV PORT=1443
  47. EXPOSE ${PORT}
  48. CMD ["node", "server/bin/prod.js"]