67 lines
2.0 KiB
Docker
67 lines
2.0 KiB
Docker
ARG REGISTRY_URL=docker.io/aprimediet
|
|
ARG UBI_VERSION=9.5
|
|
ARG NODE_VERSION=22.12.0
|
|
|
|
FROM ${REGISTRY_URL}/nodejs:${NODE_VERSION}-ubi9 AS builder
|
|
LABEL maintainer="<Muhamad Aditya Prima> aprimediet@gmail.com"
|
|
|
|
FROM ${REGISTRY_URL}/ubi9:${UBI_VERSION}-micro AS runtime
|
|
LABEL maintainer="<Muhamad Aditya Prima> aprimediet@gmail.com"
|
|
|
|
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
|
|
|
|
# Create user and group and required directories
|
|
RUN echo "nodejs:x:10001:" >> /etc/group && \
|
|
echo "nodejs:x:10001:10001:nodejs:/app:/sbin/nologin" >> /etc/passwd && \
|
|
echo "nodejs:!!:20070::::::" >> /etc/shadow && \
|
|
mkdir -p /app && \
|
|
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} && \
|
|
chown -R nodejs:nodejs /app
|
|
|
|
# Copy required libs
|
|
COPY --from=builder \
|
|
/usr/lib64/libstdc* \
|
|
/usr/lib64
|
|
|
|
# Copy nvm dir
|
|
COPY --from=builder /usr/local/share/nvm /usr/local/share/nvm
|
|
|
|
# Set node env
|
|
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 binary simlinks and set global npm cache
|
|
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 && \
|
|
npm -g config set cache ${NPM_CACHE_DIR} && \
|
|
npm config set cache ${NPM_CACHE_DIR}
|
|
|
|
USER nodejs
|
|
|
|
WORKDIR /app
|
|
|
|
CMD ["/usr/bin/node"] |