Dockerfile 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. FROM ubuntu:18.04 as builder
  2. RUN apt update \
  3. && apt install -y lsb-release software-properties-common build-essential \
  4. wget curl git tree zip unzip
  5. ARG WASI_SDK_VER=12
  6. ARG WABT_VER=1.0.23
  7. ARG CMAKE_VER=3.16.2
  8. ARG BINARYEN_VER=version_101
  9. #
  10. # install wasi-sdk
  11. ARG WASI_SDK_FILE="wasi-sdk-${WASI_SDK_VER}.0-linux.tar.gz"
  12. COPY ${WASI_SDK_FILE} /opt
  13. RUN cd /opt \
  14. && tar zxf ${WASI_SDK_FILE} \
  15. && rm ${WASI_SDK_FILE} \
  16. && ln -sf /opt/wasi-sdk-${WASI_SDK_VER}.0 /opt/wasi-sdk
  17. #
  18. # install wabt
  19. ARG WABT_FILE="wabt-${WABT_VER}-ubuntu.tar.gz"
  20. COPY ${WABT_FILE} /opt
  21. RUN cd /opt \
  22. && tar zxf ${WABT_FILE} \
  23. && rm ${WABT_FILE} \
  24. && ln -sf /opt/wabt-${WABT_VER} /opt/wabt
  25. #
  26. # install cmake
  27. ARG CMAKE_FILE="cmake-${CMAKE_VER}-Linux-x86_64.sh"
  28. COPY ${CMAKE_FILE} /tmp
  29. RUN cd /tmp \
  30. && chmod a+x ${CMAKE_FILE} \
  31. && mkdir /opt/cmake \
  32. && ./${CMAKE_FILE} --prefix=/opt/cmake --skip-license \
  33. && ln -sf /opt/cmake/bin/cmake /usr/local/bin/cmake
  34. #
  35. # install emsdk
  36. RUN cd /opt \
  37. && git clone https://github.com/emscripten-core/emsdk.git \
  38. && cd emsdk \
  39. && git pull \
  40. && ./emsdk install 2.0.12 \
  41. && ./emsdk activate 2.0.12 \
  42. && echo "source /opt/emsdk/emsdk_env.sh" >> /root/.bashrc
  43. #
  44. # install binaryen
  45. ARG BINARYEN_FILE="binaryen-${BINARYEN_VER}-x86_64-linux.tar.gz"
  46. COPY ${BINARYEN_FILE} /opt
  47. RUN cd /opt \
  48. && tar zxf ${BINARYEN_FILE} \
  49. && rm ${BINARYEN_FILE} \
  50. && ln -sf /opt/binaryen-${BINARYEN_VER} /opt/binaryen
  51. #
  52. # install bazelisk
  53. ARG BAZEL_FILE="bazelisk-linux-amd64"
  54. COPY ${BAZEL_FILE} /opt/bazelisk/bin/bazelisk
  55. RUN cd /opt/bazelisk/bin/ \
  56. && chmod a+x bazelisk \
  57. && ln -sf /opt/bazelisk/bin/bazelisk /usr/local/bin/bazel
  58. RUN apt update \
  59. && apt install -y python2.7-minimal
  60. #
  61. # Clean up
  62. RUN apt-get autoremove -y \
  63. && apt-get clean -y \
  64. && rm -rf /var/lib/apt/lists/* \
  65. && rm -rf /tmp/*
  66. VOLUME /data
  67. #
  68. #
  69. RUN touch /build.sh \
  70. && echo "\
  71. #!/bin/bash \n\
  72. if [[ -d /data/project/build ]]; then \n\
  73. rm -r /data/project/build \n\
  74. fi \n\
  75. mkdir /data/project/build \n\
  76. cd /data/project/build \n\
  77. source /opt/emsdk/emsdk_env.sh \n\
  78. cmake .. \n\
  79. make \n\
  80. cd - > /dev/null" > /build.sh \
  81. && chmod a+x /build.sh