Dockerfile 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. # Usage:
  2. #
  3. # docker build -t bcryptjs-builder .
  4. # CONTAINER=$(docker create bcryptjs-builder)
  5. # # Then copy the artifact to your host:
  6. # docker cp "$CONTAINER:/usr/local/opt/bcrypt-js/prebuilds" .
  7. # docker rm "$CONTAINER"
  8. #
  9. # Use --platform to build cross-platform i.e. for ARM:
  10. #
  11. # docker build -t bcryptjs-builder --platform "linux/arm64/v8" .
  12. # CONTAINER=$docker create --platform "linux/arm64/v8" bcryptjs-builder)
  13. # # this copies the prebuilds/linux-arm artifacts
  14. # docker cp "$CONTAINER:/usr/local/opt/bcrypt-js/prebuilds" .
  15. # docker rm "$CONTAINER"
  16. ARG FROM_IMAGE=node:18-bullseye
  17. #ARG FROM_IMAGE=arm32v7/node:16-bullseye
  18. #ARG FROM_IMAGE=arm64v8/node:16-bullseye
  19. FROM ${FROM_IMAGE}
  20. ENV project bcrypt-js
  21. ENV DEBIAN_FRONTEND noninteractive
  22. ENV LC_ALL en_US.UTF-8
  23. ENV LANG ${LC_ALL}
  24. RUN echo "#log: ${project}: Setup system" \
  25. && set -x \
  26. && apt-get update -y \
  27. && apt-get install -y \
  28. build-essential \
  29. python3 \
  30. && apt-get clean \
  31. && update-alternatives --install /usr/local/bin/python python /usr/bin/python3 20 \
  32. && npm i -g prebuildify@5 node-gyp@9 \
  33. && sync
  34. ADD . /usr/local/opt/${project}
  35. WORKDIR /usr/local/opt/${project}
  36. RUN echo "#log: ${project}: Running build" \
  37. && set -x \
  38. && npm ci \
  39. && npm run build
  40. ARG RUN_TESTS=true
  41. ARG TEST_TIMEOUT_SECONDS=
  42. RUN if "${RUN_TESTS}"; then \
  43. echo "#log ${project}: Running tests" \
  44. && npm test; \
  45. else \
  46. echo "#log ${project}: Tests were skipped!"; \
  47. fi
  48. CMD /bin/bash -l