76 lines
2.2 KiB
Docker
76 lines
2.2 KiB
Docker
ARG REGISTRY_URL=docker.io/aprimediet
|
|
ARG UBI_VERSION=9.5
|
|
|
|
FROM ${REGISTRY_URL}/ubi9:${UBI_VERSION}
|
|
LABEL maintainer="<Muhamad Aditya Prima> aprimediet@gmail.com"
|
|
|
|
ARG NVM_VERSION=0.40.1
|
|
ARG NODE_VERSION=22.12.0
|
|
|
|
USER root
|
|
|
|
WORKDIR /tmp
|
|
|
|
# Set Cache Directory
|
|
ENV NVM_DIR=/usr/local/share/nvm
|
|
ENV NODE_DIR=/usr/local/share/nodejs
|
|
ENV NPM_CACHE_DIR=${NODE_DIR}/.npm-cache
|
|
ENV YARN_CACHE_DIR=${NODE_DIR}/.yarn-cache
|
|
|
|
# Setup composer user and required directories
|
|
RUN groupadd -g 10001 nodejs && \
|
|
useradd -u 10001 -g 10001 -m -d /app -s /sbin/nologin nodejs && \
|
|
mkdir -p ${NVM_DIR} && \
|
|
mkdir -p ${NPM_CACHE_DIR} && \
|
|
mkdir -p ${YARN_CACHE_DIR}/repo && \
|
|
chown -R nodejs:nodejs ${NPM_CACHE_DIR} && \
|
|
chown -R nodejs:nodejs ${YARN_CACHE_DIR}
|
|
|
|
# Get latest nvm
|
|
ADD https://raw.githubusercontent.com/nvm-sh/nvm/v${NVM_VERSION}/install.sh ./
|
|
|
|
# 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 global npm 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 && \
|
|
yarn config set cache-folder ${YARN_CACHE_DIR} && \
|
|
dnf -y autoremove && \
|
|
dnf -y clean all
|
|
|
|
# Set binary simlinks
|
|
RUN ln -ns $NVM_DIR/versions/node/v${NODE_VERSION}/bin/corepack \
|
|
/usr/bin/corepack && \
|
|
ln -ns $NVM_DIR/versions/node/v${NODE_VERSION}/bin/node \
|
|
/usr/bin/node && \
|
|
ln -ns $NVM_DIR/versions/node/v${NODE_VERSION}/bin/npm \
|
|
/usr/bin/npm && \
|
|
ln -ns $NVM_DIR/versions/node/v${NODE_VERSION}/bin/npx \
|
|
/usr/bin/npx && \
|
|
ln -ns $NVM_DIR/versions/node/v${NODE_VERSION}/bin/yarn \
|
|
/usr/bin/yarn && \
|
|
ln -ns $NVM_DIR/versions/node/v${NODE_VERSION}/bin/yarnpkg \
|
|
/usr/bin/yarnpkg
|
|
|
|
# Clean Caches
|
|
RUN rm -rf ${NPM_CACHE_DIR}/* && \
|
|
rm -rf ${YARN_CACHE_DIR}/* && \
|
|
rm -rf ${NVM_DIR}/.cache/bin/*
|
|
|
|
USER nodejs
|
|
|
|
WORKDIR /app
|
|
|
|
CMD ["/usr/bin/node"] |