From 36e6526af6c5e1367d6496563e280c73d37637e8 Mon Sep 17 00:00:00 2001 From: Bartek Wrona <wrona@syncad.com> Date: Thu, 4 Jan 2024 20:58:39 +0100 Subject: [PATCH] 1. emsdk image extended by `nvm` tool and preinstalled by default LTS node (v18.19.0) 2. Reorganized image definition to make possible independent build of images for emscripten boost/openssl and NodeJS+npm preinstalled package set. --- Dockerfile.emscripten | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/Dockerfile.emscripten b/Dockerfile.emscripten index 2cede54..93103d1 100644 --- a/Dockerfile.emscripten +++ b/Dockerfile.emscripten @@ -3,7 +3,7 @@ ARG EMSCRIPTEN_VERSION=3.1.51 FROM emscripten/emsdk:${EMSCRIPTEN_VERSION} AS pure_emscripten_sdk -FROM pure_emscripten_sdk AS supplemented_tools_sdk +FROM pure_emscripten_sdk AS supplemented_emscripten_sdk USER root @@ -15,7 +15,13 @@ RUN apt-get update && \ autoconf \ libtool \ protobuf-compiler && \ - npm install -g pnpm + npm install -g pnpm && \ + apt-get clean && rm -r /var/lib/apt/lists/* + +FROM supplemented_emscripten_sdk AS supplemented_node_sdk + +ARG NODEJS_VERSION=v18.19.0 +ENV NODEJS_VERSION=${NODEJS_VERSION} USER emscripten WORKDIR /home/emscripten @@ -27,10 +33,16 @@ ENV HOME=/home/emscripten # Preinstall large deps (rare changed) to eliminate pulling them from web each time ENV PNPM_HOME="/home/emscripten/.local/share/pnpm" -ENV PATH="${PNPM_HOME}:${PATH}" +ENV NVM_DIR="${HOME}/.nvm" +ENV PATH="${PNPM_HOME}:${NVM_DIR}:${PATH}" ENV PLAYWRIGHT_BROWSERS_PATH="${HOME}/pw-browsers" RUN source "${EMSDK}/emsdk_env.sh" && \ + curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash && \ + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \ + nvm install "${NODEJS_VERSION}" && \ + nvm use "${NODEJS_VERSION}" && \ + pnpm config set store-dir ${PNPM_HOME}/preinstalled-store --global && \ pnpm add -g \ playwright@~1.39.0 \ ts-proto@~1.158.0 \ @@ -56,9 +68,12 @@ WORKDIR /home/emscripten ENV PNPM_HOME="/home/emscripten/.local/share/pnpm" ENV PATH="${PNPM_HOME}:${PATH}" -RUN pnpm dlx playwright install-deps +RUN pnpm playwright install-deps && apt-get clean && rm -r /var/lib/apt/lists/* + +USER emscripten +WORKDIR /home/emscripten -FROM supplemented_tools_sdk AS lib_source +FROM supplemented_emscripten_sdk AS lib_source ARG BOOST_VERSION_TAG=boost-1.82.0 ENV BOOST_VERSION_TAG=${BOOST_VERSION_TAG} @@ -123,7 +138,7 @@ WORKDIR /home/emscripten RUN /home/emscripten/scripts/prepare_secp256k1-zkp.sh "${TMP_SRC}" "/emsdk/upstream/emscripten/cache/sysroot/" -FROM supplemented_tools_sdk AS emscripten_builder +FROM supplemented_node_sdk AS emscripten_builder USER emscripten WORKDIR /home/emscripten -- GitLab