This repository contains the source for the Google-maintained Node.js docker image.
This image can be found at launcher.gcr.io/google/nodejs
or gcr.io/google-appengine/nodejs
and can be used as the base image
for running applications on Google App Engine Flexible,
Google Kubernetes Engine, or any other Docker host.
This image is based on Ubuntu 16.0.4 and includes nodejs and npm installed from nodejs.org and yarn installed from yarnpkg.com.
For a more thorough walk through of getting started with Node.js on Google Cloud Platform, please see the documentation and guides.
To generate a Dockerfile that uses this image as a base, use the Cloud SDK
. From your existing Node.js application:
gcloud beta app gen-config --custom
You can then modify the Dockerfile
and .dockerignore
as needed for you application.
For other docker hosts, you'll need to create a Dockerfile
based on this image that copies your application code and installs dependencies. For example:
FROM launcher.gcr.io/google/nodejs
# Copy application code.
COPY . /app/
# Install dependencies.
RUN npm --unsafe-perm install
By default, the CMD
is set to npm start
. You can change this by specifying your own CMD
or ENTRYPOINT
.
For a full example on deploying an application to Google Kubernetes Engine, see this tutorial.
This image assumes your application listens on port 8080. To run an application based on this image inside a Kubernetes pod, you can use a Pod configuration like this:
kind: Pod
metadata:
name: app
namespace: default
spec:
containers:
- image: $IMAGE_NAME
imagePullPolicy: IfNotPresent
name: app
ports:
- containerPort: 8080
restartPolicy: Always
The image includes the install_node
script that can be used to install a particular Node.js version. For example:
FROM launcher.gcr.io/google/nodejs
# Install node.js 4.6.1
RUN install_node v4.6.1
# Copy application code.
COPY . /app/
# Install dependencies.
RUN npm --unsafe-perm install
Node.js is installed with binary packages hosted on a Google-provided mirror. Before installing the specified version of Node.js, checks are performed to verify that the associated binary is an official Node.js release. The install_node
script will refuse to install a binary that fails this verification.
To override this behavior, and force the installation of the binary, pass the --ignore-verification-failure
flag to install_node
. However, it is highly recommended that you only install Node.js binaries that have been successfully verified.