Dockerfile.arm64v8 3.7 KB

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