ARG REGISTRY_URL=git.winteraccess.id/docker ARG UBUNTU_VERSION=noble FROM ${REGISTRY_URL}/ubuntu:${UBUNTU_VERSION} LABEL maintainer=" aprimediet@gmail.com" ARG NVM_VERSION=0.39.7 ARG NODE_VERSION=20.15.1 WORKDIR / # ADDUSER RUN groupadd -g 1001 node && useradd -u 1001 -s /bin/bash -m -d /app -g node node # CREATE NVM_DIR ENV NVM_DIR=/usr/local/share/nvm ENV NPM_CACHE_DIR=${NVM_DIR}/.npm-cache ENV YARN_CACHE_DIR=${NVM_DIR}/.yarn-cache RUN mkdir -p ${NVM_DIR} # UPGRADE PACKAGES FIRST RUN --mount=type=cache,target=/var/cache/apt/archives \ apt -y update && apt -y upgrade # GET LATEST NVM ADD https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh /tmp # INSTALL NVM AND DESIGNATED NODE VERSION RUN bash /tmp/install.sh && \ . $NVM_DIR/nvm.sh && \ nvm install v${NODE_VERSION} && \ nvm alias default v${NODE_VERSION} && \ nvm use default ENV NODE_PATH=$NVM_DIR/versions/node/v${NODE_VERSION}/lib/node_modules ENV PATH=$PATH:$NVM_DIR/versions/node/v${NODE_VERSION}/bin # SET NPM GLOBAL CACHE RUN npm -g config set cache ${NPM_CACHE_DIR} && \ npm config set cache ${NPM_CACHE_DIR} # INSTALL YARN RUN --mount=type=cache,target=${NPM_CACHE_DIR} \ npm i -g yarn # CREATE YARN CACHE DIR RUN mkdir -p ${YARN_CACHE_DIR} # SET YARN CACHE DIR RUN yarn config set cache-folder ${YARN_CACHE_DIR} # CLEAR APT CACHE RUN apt -y remove curl && apt -y autoremove && \ apt -y clean && rm -rf /tmp/* && \ npm cache clean --force && npm -g cache clean --force # SET AS USER node WORKDIR /app USER node