nodejs/Dockerfile.ubuntu-rootless

60 lines
1.5 KiB
Docker

ARG REGISTRY_URL=git.winteraccess.id/docker
ARG UBUNTU_VERSION=noble
FROM ${REGISTRY_URL}/ubuntu:${UBUNTU_VERSION}
LABEL maintainer="<Muhamad Aditya Prima> 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