Dockerfile.arm64v8 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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=v12.16.1 \
  7. WEKAN_VERSION=3.96 \
  8. WEKAN_ARCHITECTURE=arm64
  9. # Install dependencies
  10. RUN apk update && apk add ca-certificates outils-sha1 && \
  11. \
  12. # Download qemu static for our architecture
  13. wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-${QEMU_ARCHITECTURE}-static.tar.gz -O - | tar -xz && \
  14. \
  15. # Download wekan and shasum
  16. wget https://releases.wekan.team/raspi3/wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip && \
  17. wget https://releases.wekan.team/raspi3/SHA256SUMS.txt && \
  18. # Verify wekan
  19. grep wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip SHA256SUMS.txt | sha256sum -c - && \
  20. \
  21. # Unzip wekan
  22. unzip wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip && \
  23. \
  24. # Download node and shasums
  25. wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
  26. wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
  27. \
  28. # Verify nodejs authenticity
  29. grep node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | sha256sum -c - && \
  30. \
  31. # Extract node and remove tar.gz
  32. tar xvzf node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz
  33. # Build wekan dockerfile
  34. FROM arm64v8/ubuntu:19.10
  35. LABEL maintainer="wekan"
  36. # Set the environment variables (defaults where required)
  37. ENV QEMU_ARCHITECTURE=aarch64 \
  38. NODE_ARCHITECTURE=linux-arm64 \
  39. NODE_VERSION=v12.16.1 \
  40. NODE_ENV=production \
  41. NPM_VERSION=latest \
  42. WITH_API=true \
  43. PORT=8080 \
  44. ROOT_URL=http://localhost \
  45. MONGO_URL=mongodb://127.0.0.1:27017/wekan
  46. # Copy qemu-static to image
  47. COPY --from=builder qemu-${QEMU_ARCHITECTURE}-static /usr/bin
  48. # Copy the app to the image
  49. COPY --from=builder bundle /home/wekan/bundle
  50. # Copy
  51. COPY --from=builder node-${NODE_VERSION}-${NODE_ARCHITECTURE} /opt/nodejs
  52. RUN \
  53. set -o xtrace && \
  54. # Add non-root user wekan
  55. useradd --user-group --system --home-dir /home/wekan wekan && \
  56. \
  57. # Install Node
  58. ln -s /opt/nodejs/bin/node /usr/bin/node && \
  59. ln -s /opt/nodejs/bin/npm /usr/bin/npm && \
  60. mkdir -p /opt/nodejs/lib/node_modules/fibers/.node-gyp /root/.node-gyp/8.16.1 /home/wekan/.config && \
  61. chown wekan --recursive /home/wekan/.config && \
  62. \
  63. # Install Node dependencies
  64. npm install -g npm@${NPM_VERSION}
  65. EXPOSE $PORT
  66. USER wekan
  67. CMD ["node", "/home/wekan/bundle/main.js"]