78 lines
3.2 KiB
Docker
78 lines
3.2 KiB
Docker
FROM registry.fedoraproject.org/f32/s2i-base:latest
|
|
|
|
# This image provides a Node.JS environment you can use to run your Node.JS
|
|
# applications.
|
|
|
|
EXPOSE 8080
|
|
|
|
# Add $HOME/node_modules/.bin to the $PATH, allowing user to make npm scripts
|
|
# available on the CLI without using npm's --global installation mode
|
|
# This image will be initialized with "npm run $NPM_RUN"
|
|
# See https://docs.npmjs.com/misc/scripts, and your repo's package.json
|
|
# file for possible values of NPM_RUN
|
|
# Description
|
|
# Environment:
|
|
# * $NPM_RUN - Select an alternate / custom runtime mode, defined in your package.json files' scripts section (default: npm run "start").
|
|
# Expose ports:
|
|
# * 8080 - Unprivileged port used by nodejs application
|
|
|
|
ENV NODEJS_VERSION=12 \
|
|
NPM_RUN=start \
|
|
NAME=nodejs \
|
|
NPM_CONFIG_PREFIX=$HOME/.npm-global \
|
|
PATH=$HOME/node_modules/.bin/:$HOME/.npm-global/bin/:$PATH
|
|
|
|
ENV SUMMARY="Platform for building and running Node.js $NODEJS_VERSION applications" \
|
|
DESCRIPTION="Node.js $NODEJS_VERSION available as container is a base platform for \
|
|
building and running various Node.js $NODEJS_VERSION applications and frameworks. \
|
|
Node.js is a platform built on Chrome's JavaScript runtime for easily building \
|
|
fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model \
|
|
that makes it lightweight and efficient, perfect for data-intensive real-time applications \
|
|
that run across distributed devices."
|
|
|
|
LABEL summary="$SUMMARY" \
|
|
description="$DESCRIPTION" \
|
|
io.k8s.description="$DESCRIPTION" \
|
|
io.k8s.display-name="Node.js $NODEJS_VERSION" \
|
|
io.openshift.expose-services="8080:http" \
|
|
io.openshift.tags="builder,$NAME,$NAME$NODEJS_VERSION" \
|
|
io.openshift.s2i.scripts-url="image:///usr/libexec/s2i" \
|
|
io.s2i.scripts-url="image:///usr/libexec/s2i" \
|
|
com.redhat.dev-mode="DEV_MODE:false" \
|
|
com.redhat.deployments-dir="${APP_ROOT}/src" \
|
|
com.redhat.dev-mode.port="DEBUG_PORT:5858"\
|
|
com.redhat.component="$NAME" \
|
|
name="$FGC/$NAME" \
|
|
version="$NODEJS_VERSION" \
|
|
maintainer="SoftwareCollections.org <sclorg@redhat.com>" \
|
|
help="For more information visit https://github.com/sclorg/s2i-nodejs-container" \
|
|
usage="s2i build <SOURCE-REPOSITORY> centos/$NAME-$NODEJS_VERSION-centos7:latest <APP-NAME>"
|
|
|
|
RUN yum -y module enable nodejs:$NODEJS_VERSION && \
|
|
INSTALL_PKGS="nodejs npm nss_wrapper" && \
|
|
yum remove $INSTALL_PKGS -y && \
|
|
yum install -y --setopt=tsflags=nodocs $INSTALL_PKGS && \
|
|
rpm -V $INSTALL_PKGS && \
|
|
yum -y clean all --enablerepo='*'
|
|
|
|
# TODO: Add nodejs-nodemon into Fedora
|
|
# https://bugzilla.redhat.com/show_bug.cgi?id=1433784
|
|
#RUN NPM_CONFIG_PREFIX=$HOME/../ npm install -g nodemon && \
|
|
# rm $(npm config get cache)/* -rf && \
|
|
# rm -rf $(npm config get tmp)/npm-*
|
|
|
|
|
|
# Copy the S2I scripts from the specific language image to $STI_SCRIPTS_PATH
|
|
COPY ./s2i/bin/ $STI_SCRIPTS_PATH
|
|
|
|
# Copy extra files to the image, including help file.
|
|
COPY ./root/ /
|
|
|
|
# Drop the root user and make the content of /opt/app-root owned by user 1001
|
|
RUN chown -R 1001:0 ${APP_ROOT} && chmod -R ug+rwx ${APP_ROOT} && \
|
|
rpm-file-permissions
|
|
|
|
USER 1001
|
|
|
|
# Set the default CMD to print the usage of the language image
|
|
CMD $STI_SCRIPTS_PATH/usage
|