Dockerfile.arm64v8 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. FROM amd64/alpine:3.7 AS builder
  2. # Set the environment variables for builder
  3. ENV QEMU_VERSION=v4.2.0-6 \
  4. QEMU_ARCHITECTURE=aarch64 \
  5. NODE_ARCHITECTURE=linux-arm64 \
  6. NODE_VERSION=v14.21.3 \
  7. WEKAN_VERSION=latest \
  8. WEKAN_ARCHITECTURE=arm64 \
  9. NODE_OPTIONS="--max_old_space_size=4096"
  10. #---------------------------------------------------------------------
  11. # https://github.com/wekan/wekan/issues/3585#issuecomment-1021522132
  12. # Add more Node heap:
  13. # NODE_OPTIONS="--max_old_space_size=4096"
  14. # Add more stack:
  15. # bash -c "ulimit -s 65500; exec node --stack-size=65500 main.js"
  16. #---------------------------------------------------------------------
  17. # Install dependencies
  18. RUN apk update && apk add ca-certificates outils-sha1 && \
  19. \
  20. # Download qemu static for our architecture
  21. wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-${QEMU_ARCHITECTURE}-static.tar.gz -O - | tar -xz && \
  22. \
  23. # Download wekan and shasum
  24. wget https://releases.wekan.team/raspi3/wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip && \
  25. wget https://releases.wekan.team/raspi3/SHA256SUMS.txt && \
  26. # Verify wekan
  27. grep wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip SHA256SUMS.txt | sha256sum -c - && \
  28. \
  29. # Unzip wekan
  30. unzip wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip && \
  31. \
  32. # Download node and shasums
  33. wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
  34. wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
  35. \
  36. # Verify nodejs authenticity
  37. grep node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | sha256sum -c - && \
  38. \
  39. # Extract node and remove tar.gz
  40. tar xvzf node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz
  41. # Build wekan dockerfile
  42. FROM arm64v8/ubuntu:19.10
  43. LABEL maintainer="wekan"
  44. # Set the environment variables (defaults where required)
  45. ENV QEMU_ARCHITECTURE=aarch64 \
  46. NODE_ARCHITECTURE=linux-arm64 \
  47. NODE_VERSION=v14.21.3 \
  48. NODE_ENV=production \
  49. NPM_VERSION=latest \
  50. WITH_API=true \
  51. PORT=8080 \
  52. ROOT_URL=http://localhost \
  53. MONGO_URL=mongodb://127.0.0.1:27017/wekan
  54. # Copy qemu-static to image
  55. COPY --from=builder qemu-${QEMU_ARCHITECTURE}-static /usr/bin
  56. # Copy the app to the image
  57. COPY --from=builder bundle /home/wekan/bundle
  58. # Copy
  59. COPY --from=builder node-${NODE_VERSION}-${NODE_ARCHITECTURE} /opt/nodejs
  60. RUN \
  61. set -o xtrace && \
  62. # Add non-root user wekan
  63. useradd --user-group --system --home-dir /home/wekan wekan && \
  64. \
  65. # Install Node
  66. ln -s /opt/nodejs/bin/node /usr/bin/node && \
  67. ln -s /opt/nodejs/bin/npm /usr/bin/npm && \
  68. mkdir -p /opt/nodejs/lib/node_modules/fibers/.node-gyp /root/.node-gyp/8.16.1 /home/wekan/.config && \
  69. chown wekan --recursive /home/wekan/.config && \
  70. \
  71. # Install Node dependencies
  72. npm install -g npm@${NPM_VERSION}
  73. EXPOSE $PORT
  74. USER wekan
  75. #---------------------------------------------------------------------
  76. # https://github.com/wekan/wekan/issues/3585#issuecomment-1021522132
  77. # Add more Node heap:
  78. # NODE_OPTIONS="--max_old_space_size=4096"
  79. # Add more stack:
  80. # bash -c "ulimit -s 65500; exec node --stack-size=65500 main.js"
  81. #---------------------------------------------------------------------
  82. #
  83. #CMD ["node", "/home/wekan/bundle/main.js"]
  84. #CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 /home/wekan/bundle/main.js"]
  85. CMD ["bash", "-c", "ulimit -s 65500; exec node /home/wekan/bundle/main.js"]