Skip to content

Separate handling of non-default nodejs to sync Fedora 41 Dockerfiles #477

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions 18-minimal/Dockerfile.fedora
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM quay.io/fedora/fedora-minimal:38
FROM quay.io/fedora/fedora-minimal:41

EXPOSE 8080

Expand All @@ -15,9 +15,11 @@ EXPOSE 8080
ENV APP_ROOT=/opt/app-root \
# The $HOME is not set by default, but some applications need this variable
HOME=/opt/app-root/src \
STI_SCRIPTS_PATH=/usr/libexec/s2i \
NPM_RUN=start \
PLATFORM="fedora" \
NODEJS_VERSION=18 \
DEFAULT_NODEJS_VERSION=22 \
NPM_RUN=start \
NAME=nodejs

Expand Down Expand Up @@ -49,14 +51,17 @@ LABEL summary="$SUMMARY" \
help="For more information visit https://github.com/sclorg/s2i-nodejs-container"

# nodejs-full-i18n is included for error strings
RUN INSTALL_PKGS="nodejs nodejs-nodemon nodejs-full-i18n nodejs-npm findutils tar which nss_wrapper-libs" && \
RUN INSTALL_PKGS="nodejs$NODEJS_VERSION nodejs-nodemon nodejs$NODEJS_VERSION-full-i18n nodejs$NODEJS_VERSION-npm findutils tar which nss_wrapper-libs" && \
microdnf -y --nodocs --setopt=install_weak_deps=0 install $INSTALL_PKGS && \
microdnf clean all && \
node -v | grep -qe "^v$NODEJS_VERSION\." && echo "Found VERSION $NODEJS_VERSION" && \
rm -rf /mnt/rootfs/var/cache/* /mnt/rootfs/var/log/dnf* /mnt/rootfs/var/log/yum.*

COPY ./s2i/bin/ /usr/libexec/s2i
RUN chmod +x /usr/libexec/s2i/init-wrapper
# Copy the S2I scripts from the specific language image to $STI_SCRIPTS_PATH
COPY ./s2i/bin/ $STI_SCRIPTS_PATH
RUN chmod +x $STI_SCRIPTS_PATH/init-wrapper $STI_SCRIPTS_PATH/ensure-default-node

# Make sure a user has non-versioned binaries available for the correct Node.js version
RUN $STI_SCRIPTS_PATH/ensure-default-node

# Copy extra files to the image.
COPY ./root/ /
Expand Down
15 changes: 15 additions & 0 deletions 18-minimal/s2i/bin/ensure-default-node
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

set -xe

for bin in node npm npx ; do
[ -f /usr/bin/$bin ] || ln -s /usr/bin/$bin-$NODEJS_VERSION /usr/bin/$bin
done

if [ $NODEJS_VERSION -ne $DEFAULT_NODEJS_VERSION ] ; then
ln -s /usr/lib/node_modules_$DEFAULT_NODEJS_VERSION/nodemon /usr/lib/node_modules_$NODEJS_VERSION/nodemon
fi

[ -d /usr/lib/node_modules_$NODEJS_VERSION/nodemon ] && echo "Found nodemon for version $NODEJS_VERSION"

node -v | grep -qe "^v$NODEJS_VERSION\." && echo "Found VERSION $NODEJS_VERSION"
17 changes: 9 additions & 8 deletions 18/Dockerfile.fedora
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM quay.io/fedora/s2i-core:38
FROM quay.io/fedora/s2i-core:41

# This image provides a Node.JS environment you can use to run your Node.JS
# applications.
Expand All @@ -17,6 +17,7 @@ EXPOSE 8080
# * 8080 - Unprivileged port used by nodejs application

ENV NODEJS_VERSION=18 \
DEFAULT_NODEJS_VERSION=22 \
NPM_RUN=start \
NAME=nodejs \
NPM_CONFIG_PREFIX=$HOME/.npm-global \
Expand Down Expand Up @@ -48,16 +49,16 @@ LABEL summary="$SUMMARY" \
help="For more information visit https://github.com/sclorg/s2i-nodejs-container" \
usage="oc new-app $FGC/$NAME~<SOURCE-REPOSITORY>"

RUN MODULE_DEPS="make gcc gcc-c++ libatomic_ops git openssl-devel" && \
INSTALL_PKGS="$MODULE_DEPS nodejs nodejs-nodemon nodejs-npm nss_wrapper-libs which" && \
yum install -y --setopt=tsflags=nodocs $INSTALL_PKGS && \
rpm -V $INSTALL_PKGS && \
node -v | grep -qe "^v$NODEJS_VERSION\." && echo "Found VERSION $NODEJS_VERSION" && \
yum -y clean all --enablerepo='*'
RUN INSTALL_PKGS="make gcc gcc-c++ libatomic_ops git openssl-devel nodejs$NODEJS_VERSION nodejs-nodemon nodejs$NODEJS_VERSION-npm nss_wrapper-libs which" && \
dnf install -y --setopt=tsflags=nodocs $INSTALL_PKGS && \
dnf -y clean all --enablerepo='*'

# Copy the S2I scripts from the specific language image to $STI_SCRIPTS_PATH
COPY ./s2i/bin/ $STI_SCRIPTS_PATH
RUN chmod +x $STI_SCRIPTS_PATH/init-wrapper
RUN chmod +x $STI_SCRIPTS_PATH/init-wrapper $STI_SCRIPTS_PATH/ensure-default-node

# Make sure a user has non-versioned binaries available for the correct Node.js version
RUN $STI_SCRIPTS_PATH/ensure-default-node

# Copy extra files to the image, including help file.
COPY ./root/ /
Expand Down
15 changes: 15 additions & 0 deletions 18/s2i/bin/ensure-default-node
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

set -xe

for bin in node npm npx ; do
[ -f /usr/bin/$bin ] || ln -s /usr/bin/$bin-$NODEJS_VERSION /usr/bin/$bin
done

if [ $NODEJS_VERSION -ne $DEFAULT_NODEJS_VERSION ] ; then
ln -s /usr/lib/node_modules_$DEFAULT_NODEJS_VERSION/nodemon /usr/lib/node_modules_$NODEJS_VERSION/nodemon
fi

[ -d /usr/lib/node_modules_$NODEJS_VERSION/nodemon ] && echo "Found nodemon for version $NODEJS_VERSION"

node -v | grep -qe "^v$NODEJS_VERSION\." && echo "Found VERSION $NODEJS_VERSION"
18 changes: 9 additions & 9 deletions 20-minimal/Dockerfile.fedora
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM quay.io/fedora/fedora-minimal:38
FROM quay.io/fedora/fedora-minimal:41

EXPOSE 8080

Expand All @@ -15,9 +15,11 @@ EXPOSE 8080
ENV APP_ROOT=/opt/app-root \
# The $HOME is not set by default, but some applications need this variable
HOME=/opt/app-root/src \
STI_SCRIPTS_PATH=/usr/libexec/s2i \
NPM_RUN=start \
PLATFORM="fedora" \
NODEJS_VERSION=20 \
DEFAULT_NODEJS_VERSION=22 \
NPM_RUN=start \
NAME=nodejs

Expand Down Expand Up @@ -52,16 +54,14 @@ LABEL summary="$SUMMARY" \
RUN INSTALL_PKGS="nodejs$NODEJS_VERSION nodejs-nodemon nodejs$NODEJS_VERSION-full-i18n nodejs$NODEJS_VERSION-npm findutils tar which nss_wrapper-libs" && \
microdnf -y --nodocs --setopt=install_weak_deps=0 install $INSTALL_PKGS && \
microdnf clean all && \
ln -s /usr/bin/node-$NODEJS_VERSION /usr/bin/node && \
ln -s /usr/bin/npm-$NODEJS_VERSION /usr/bin/npm && \
ln -s /usr/bin/npx-$NODEJS_VERSION /usr/bin/npx && \
ln -s /usr/lib/node_modules_18/nodemon /usr/lib/node_modules_$NODEJS_VERSION/nodemon && \
node -v | grep -qe "^v$NODEJS_VERSION\." && echo "Found VERSION $NODEJS_VERSION" && \
rm -rf /mnt/rootfs/var/cache/* /mnt/rootfs/var/log/dnf* /mnt/rootfs/var/log/yum.*

#
COPY ./s2i/bin/ /usr/libexec/s2i
RUN chmod +x /usr/libexec/s2i/init-wrapper
# Copy the S2I scripts from the specific language image to $STI_SCRIPTS_PATH
COPY ./s2i/bin/ $STI_SCRIPTS_PATH
RUN chmod +x $STI_SCRIPTS_PATH/init-wrapper $STI_SCRIPTS_PATH/ensure-default-node

# Make sure a user has non-versioned binaries available for the correct Node.js version
RUN $STI_SCRIPTS_PATH/ensure-default-node

# Copy extra files to the image.
COPY ./root/ /
Expand Down
15 changes: 15 additions & 0 deletions 20-minimal/s2i/bin/ensure-default-node
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

set -xe

for bin in node npm npx ; do
[ -f /usr/bin/$bin ] || ln -s /usr/bin/$bin-$NODEJS_VERSION /usr/bin/$bin
done

if [ $NODEJS_VERSION -ne $DEFAULT_NODEJS_VERSION ] ; then
ln -s /usr/lib/node_modules_$DEFAULT_NODEJS_VERSION/nodemon /usr/lib/node_modules_$NODEJS_VERSION/nodemon
fi

[ -d /usr/lib/node_modules_$NODEJS_VERSION/nodemon ] && echo "Found nodemon for version $NODEJS_VERSION"

node -v | grep -qe "^v$NODEJS_VERSION\." && echo "Found VERSION $NODEJS_VERSION"
21 changes: 9 additions & 12 deletions 20/Dockerfile.fedora
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM quay.io/fedora/s2i-core:38
FROM quay.io/fedora/s2i-core:41

# This image provides a Node.JS environment you can use to run your Node.JS
# applications.
Expand All @@ -17,6 +17,7 @@ EXPOSE 8080
# * 8080 - Unprivileged port used by nodejs application

ENV NODEJS_VERSION=20 \
DEFAULT_NODEJS_VERSION=22 \
NPM_RUN=start \
NAME=nodejs \
NPM_CONFIG_PREFIX=$HOME/.npm-global \
Expand Down Expand Up @@ -48,20 +49,16 @@ LABEL summary="$SUMMARY" \
help="For more information visit https://github.com/sclorg/s2i-nodejs-container" \
usage="oc new-app $FGC/$NAME~<SOURCE-REPOSITORY>"

RUN MODULE_DEPS="make gcc gcc-c++ libatomic_ops git openssl-devel" && \
INSTALL_PKGS="$MODULE_DEPS nodejs$NODEJS_VERSION nodejs-nodemon nodejs$NODEJS_VERSION-npm nss_wrapper-libs which" && \
yum install -y --setopt=tsflags=nodocs $INSTALL_PKGS && \
rpm -V $INSTALL_PKGS && \
ln -s /usr/bin/node-$NODEJS_VERSION /usr/bin/node && \
ln -s /usr/bin/npm-$NODEJS_VERSION /usr/bin/npm && \
ln -s /usr/bin/npx-$NODEJS_VERSION /usr/bin/npx && \
ln -s /usr/lib/node_modules_18/nodemon /usr/lib/node_modules_$NODEJS_VERSION/nodemon && \
node -v | grep -qe "^v$NODEJS_VERSION\." && echo "Found VERSION $NODEJS_VERSION" && \
yum -y clean all --enablerepo='*'
RUN INSTALL_PKGS="make gcc gcc-c++ libatomic_ops git openssl-devel nodejs$NODEJS_VERSION nodejs-nodemon nodejs$NODEJS_VERSION-npm nss_wrapper-libs which" && \
dnf install -y --setopt=tsflags=nodocs $INSTALL_PKGS && \
dnf -y clean all --enablerepo='*'

# Copy the S2I scripts from the specific language image to $STI_SCRIPTS_PATH
COPY ./s2i/bin/ $STI_SCRIPTS_PATH
RUN chmod +x $STI_SCRIPTS_PATH/init-wrapper
RUN chmod +x $STI_SCRIPTS_PATH/init-wrapper $STI_SCRIPTS_PATH/ensure-default-node

# Make sure a user has non-versioned binaries available for the correct Node.js version
RUN $STI_SCRIPTS_PATH/ensure-default-node

# Copy extra files to the image, including help file.
COPY ./root/ /
Expand Down
15 changes: 15 additions & 0 deletions 20/s2i/bin/ensure-default-node
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

set -xe

for bin in node npm npx ; do
[ -f /usr/bin/$bin ] || ln -s /usr/bin/$bin-$NODEJS_VERSION /usr/bin/$bin
done

if [ $NODEJS_VERSION -ne $DEFAULT_NODEJS_VERSION ] ; then
ln -s /usr/lib/node_modules_$DEFAULT_NODEJS_VERSION/nodemon /usr/lib/node_modules_$NODEJS_VERSION/nodemon
fi

[ -d /usr/lib/node_modules_$NODEJS_VERSION/nodemon ] && echo "Found nodemon for version $NODEJS_VERSION"

node -v | grep -qe "^v$NODEJS_VERSION\." && echo "Found VERSION $NODEJS_VERSION"
17 changes: 9 additions & 8 deletions 22-minimal/Dockerfile.fedora
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM quay.io/fedora/fedora-minimal:40
FROM quay.io/fedora/fedora-minimal:41

EXPOSE 8080

Expand All @@ -15,9 +15,11 @@ EXPOSE 8080
ENV APP_ROOT=/opt/app-root \
# The $HOME is not set by default, but some applications need this variable
HOME=/opt/app-root/src \
STI_SCRIPTS_PATH=/usr/libexec/s2i \
NPM_RUN=start \
PLATFORM="fedora" \
NODEJS_VERSION=22 \
DEFAULT_NODEJS_VERSION=22 \
NPM_RUN=start \
NAME=nodejs

Expand Down Expand Up @@ -52,15 +54,14 @@ LABEL summary="$SUMMARY" \
RUN INSTALL_PKGS="nodejs$NODEJS_VERSION nodejs-nodemon nodejs$NODEJS_VERSION-full-i18n nodejs$NODEJS_VERSION-npm findutils tar which nss_wrapper-libs" && \
microdnf -y --nodocs --setopt=install_weak_deps=0 install $INSTALL_PKGS && \
microdnf clean all && \
ln -s /usr/bin/node-$NODEJS_VERSION /usr/bin/node && \
ln -s /usr/bin/npm-$NODEJS_VERSION /usr/bin/npm && \
ln -s /usr/bin/npx-$NODEJS_VERSION /usr/bin/npx && \
node -v | grep -qe "^v$NODEJS_VERSION\." && echo "Found VERSION $NODEJS_VERSION" && \
rm -rf /mnt/rootfs/var/cache/* /mnt/rootfs/var/log/dnf* /mnt/rootfs/var/log/yum.*

#
COPY ./s2i/bin/ /usr/libexec/s2i
RUN chmod +x /usr/libexec/s2i/init-wrapper
# Copy the S2I scripts from the specific language image to $STI_SCRIPTS_PATH
COPY ./s2i/bin/ $STI_SCRIPTS_PATH
RUN chmod +x $STI_SCRIPTS_PATH/init-wrapper $STI_SCRIPTS_PATH/ensure-default-node

# Make sure a user has non-versioned binaries available for the correct Node.js version
RUN $STI_SCRIPTS_PATH/ensure-default-node

# Copy extra files to the image.
COPY ./root/ /
Expand Down
15 changes: 15 additions & 0 deletions 22-minimal/s2i/bin/ensure-default-node
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

set -xe

for bin in node npm npx ; do
[ -f /usr/bin/$bin ] || ln -s /usr/bin/$bin-$NODEJS_VERSION /usr/bin/$bin
done

if [ $NODEJS_VERSION -ne $DEFAULT_NODEJS_VERSION ] ; then
ln -s /usr/lib/node_modules_$DEFAULT_NODEJS_VERSION/nodemon /usr/lib/node_modules_$NODEJS_VERSION/nodemon
fi

[ -d /usr/lib/node_modules_$NODEJS_VERSION/nodemon ] && echo "Found nodemon for version $NODEJS_VERSION"

node -v | grep -qe "^v$NODEJS_VERSION\." && echo "Found VERSION $NODEJS_VERSION"
13 changes: 6 additions & 7 deletions 22/Dockerfile.fedora
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM quay.io/fedora/s2i-core:40
FROM quay.io/fedora/s2i-core:41

# This image provides a Node.JS environment you can use to run your Node.JS
# applications.
Expand All @@ -17,6 +17,7 @@ EXPOSE 8080
# * 8080 - Unprivileged port used by nodejs application

ENV NODEJS_VERSION=22 \
DEFAULT_NODEJS_VERSION=22 \
NPM_RUN=start \
NAME=nodejs \
NPM_CONFIG_PREFIX=$HOME/.npm-global \
Expand Down Expand Up @@ -50,16 +51,14 @@ LABEL summary="$SUMMARY" \

RUN INSTALL_PKGS="make gcc gcc-c++ libatomic_ops git openssl-devel nodejs$NODEJS_VERSION nodejs-nodemon nodejs$NODEJS_VERSION-npm nss_wrapper-libs which" && \
dnf install -y --setopt=tsflags=nodocs $INSTALL_PKGS && \
rpm -V $INSTALL_PKGS && \
ln -s /usr/bin/node-$NODEJS_VERSION /usr/bin/node && \
ln -s /usr/bin/npm-$NODEJS_VERSION /usr/bin/npm && \
ln -s /usr/bin/npx-$NODEJS_VERSION /usr/bin/npx && \
node -v | grep -qe "^v$NODEJS_VERSION\." && echo "Found VERSION $NODEJS_VERSION" && \
dnf -y clean all --enablerepo='*'

# Copy the S2I scripts from the specific language image to $STI_SCRIPTS_PATH
COPY ./s2i/bin/ $STI_SCRIPTS_PATH
RUN chmod +x /usr/libexec/s2i/init-wrapper
RUN chmod +x $STI_SCRIPTS_PATH/init-wrapper $STI_SCRIPTS_PATH/ensure-default-node

# Make sure a user has non-versioned binaries available for the correct Node.js version
RUN $STI_SCRIPTS_PATH/ensure-default-node

# Copy extra files to the image, including help file.
COPY ./root/ /
Expand Down
15 changes: 15 additions & 0 deletions 22/s2i/bin/ensure-default-node
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

set -xe

for bin in node npm npx ; do
[ -f /usr/bin/$bin ] || ln -s /usr/bin/$bin-$NODEJS_VERSION /usr/bin/$bin
done

if [ $NODEJS_VERSION -ne $DEFAULT_NODEJS_VERSION ] ; then
ln -s /usr/lib/node_modules_$DEFAULT_NODEJS_VERSION/nodemon /usr/lib/node_modules_$NODEJS_VERSION/nodemon
fi

[ -d /usr/lib/node_modules_$NODEJS_VERSION/nodemon ] && echo "Found nodemon for version $NODEJS_VERSION"

node -v | grep -qe "^v$NODEJS_VERSION\." && echo "Found VERSION $NODEJS_VERSION"