This repository contains sources for an s2i builder image, based on CentOS7 and Node.js releases from nodejs.org.
If you are interested in developing against SCL-based Node.js releases, try sti-nodejs.
For more information about using these images with OpenShift, please see the official OpenShift Documentation.
Node.JS versions currently provided:
7.7.1
: (7.7.1, 7, 7.7, current, latest)6.10.0
: (6.10.0, 6, 6.10, lts, Boron)5.12.0
: (5.12.0, 5, 5.12)4.8.0
: (4.8.0, 4, 4.8, lts, Argon)
OpenShift allows you to quickly start a build using the web console, or the CLI.
The oc
command-line tool can be used to start a build, layering your desired nodejs REPO_URL
sources into a centos7 image with your selected RELEASE
of Node.js via the following command format:
oc new-app bucharestgold/centos7-s2i-nodejs:RELEASE~REPO_URL
For example, you can run a build (including npm install
steps), using http-base
example repo, and the current
relase of nodejs with:
oc new-app bucharestgold/centos7-s2i-nodejs:current~http://github.com/bucharest-gold/http-base
Or, to run the latest lts
release:
oc new-app bucharestgold/centos7-s2i-nodejs:lts~http://github.com/bucharest-gold/http-base
You can try using any of the available tagged Node.js releases, and your own repo sources - as long as your application source will init correctly with npm start
, and listen on port 8080.
Application developers can use the following environment variables to configure the runtime behavior of this image:
NAME | Description |
---|---|
NPM_RUN | Select an alternate / custom runtime mode, defined in your package.json file's scripts section (default: npm run "start") |
NPM_MIRROR | Sets the npm registry URL |
NODE_ENV | NodeJS runtime mode (default: "production") |
HTTP_PROXY | use an npm proxy during assembly |
HTTPS_PROXY | use an npm proxy during assembly |
One way to define a set of environment variables is to include them as key value pairs in your repo's .s2i/environment
file.
Example: DATABASE_USER=sampleUser
The following package.json
example includes a scripts.dev
entry. You can define your own custom NPM_RUN
scripts in your application's package.json
file.
To change your source code in a running container, use Docker's exec command:
$ docker exec -it <CONTAINER_ID> /bin/bash
After you Docker exec into the running container, your current directory is set to /opt/app-root/src
, where the source code for your application is located.
If you have deployed the container to OpenShift, you can use oc rsync to copy local files to a remote container running in an OpenShift pod.
The Source2Image cli tools are available as a standalone project, allowing you to run builds outside of OpenShift.
This example will produce a new docker image named webapp
:
s2i build https://github.com/bucharest-gold/s2i-nodejs bucharestgold/centos7-s2i-nodejs:current webapp
There are several ways to make this base image and the full list of tagged Node.js releases available to users during OpenShift's web-based "Add to Project" workflow.
Those without admin privileges can install the latest Node.js releases within their project context with:
oc create -f https://raw.githubusercontent.com/bucharest-gold/origin-s2i-nodejs/master/image-streams.json
To ensure that each of the latest Node.js release tags are available and displayed correctly in the web UI, try upgrading / reinstalling the image stream:
oc delete is/centos7-s2i-nodejs ; oc create -f https://raw.githubusercontent.com/bucharest-gold/origin-s2i-nodejs/master/image-streams.json
If you've (automatically) imported this image using the oc new-app
example command, then you may need to clear the auto-imported image stream reference and re-install it.
Administrators can make these Node.js releases available globally (visible in all projects, by all users) by adding them to the openshift
namespace:
oc create -n openshift -f https://raw.githubusercontent.com/bucharest-gold/origin-s2i-nodejs/master/image-streams.json
To replace the default SCL-packaged openshift/nodejs
image (admin access required), run:
oc delete is/nodejs -n openshift ; oc create -n openshift -f https://raw.githubusercontent.com/bucharest-gold/origin-s2i-nodejs/master/centos7-s2i-nodejs.json
Clone a copy of this repo to fetch the build sources:
$ git clone https://github.com/bucharest-gold/origin-s2i-nodejs.git
$ cd origin-s2i-nodejs
To build your own S2I Node.JS builder images from scratch, run:
$ docker pull openshift/base-centos7
$ make build
You can also build a specific release, or try building the alternate ONBUILD
version of this base:
$ ONBUILD=true make VERSION=6.3.1
The ONBUILD
base images are available at https://hub.docker.com/r/bucharestgold/centos7-nodejs
Instructions for build own builder images on Ubuntu 1604
This repository also provides a S2I test framework, which launches tests to check functionality of a simple Node.JS application built on top of the sti-nodejs image.
Users can choose between testing a Node.JS test application based on a RHEL or CentOS image.
-
CentOS based image
$ cd sti-nodejs $ make test
-
Dockerfile
CentOS based Dockerfile with 64bit nodejs binaries from nodejs.org. Used to create the
s2i
base images. -
Dockerfile.onbuild
CentOS based Dockerfile with 64bit nodejs binaries from nodejs.org.
-
build/
Folder containing scripts which are responsible for the build and test actions performed by the
Makefile
. -
**
image-streams.json
**Use this file to add these runtimes to OpenShift's web-based "Add to Project" workflow.
-
**
releases.json
**A JSON file containing metadata about the releases currently supported.
-
s2i
This folder contains scripts that are run by
s2i
:-
assemble
Used to install the sources into the location where the application will be run and prepare the application for deployment (eg. installing modules using npm, etc.)
-
run
This script is responsible for running the application, by using the application web server.
-
usage
*This script prints the usage of this image.
-
-
contrib/
This folder contains a file with commonly used modules.
-
test/
This folder contains the
s2i
test framework with simple Node.JS echo server. -
**
Makefile
**See the build your own builder images section of the
README
forbuild
andtest
usage details.