How to Docker with Node.js - Robin Wieruch

How to Docker with Node.js - Robin Wieruch

Just recently I had to use Docker for my Node.js web application development. Here I want to give you a brief walkthrough on how to achieve it. First of all, we need a Node.js application. Either take your own Node.js application, or take this minimal Node.js application or this minimal Node.js with Express application . In this Docker tutorial, we will use the latter to visit our output in a browser later.

After you have cloned and installed the Node.js project, visit it on http://localhost:3000 to see the printed “Hello World” . Everything should work as expected. Now, we will ship this Node application in a Docker container by using Docker image . First of all, create a so-called Dockerfile :

And enter the following content to the Dockerfile:

Everything in this Dockerfile is read by the Docker interpreter line by line. In the end, it’s the blueprint to create a your custom Docker Image suited for your application. The foundational image (here FROM ) we are using here makes sure that all Node/npm commands are available in the Dockerfile. Otherwise, if using a non related Node image, we would need to install Node in the Dockerfile ourselves before we could use the Node specific commands .

Optionally create a .dockerignore file to exclude folders and files from the Docker process. For example, the node_modules don’t need to be included for the Docker image, because they will be installed in the process with npm install (see Dockerfile). Therefore, the content of the .dockerignore file could be:

Next, create an account on the official Docker Hub . Afterward, you should have a Docker Hub username which can be used to build your first Docker image :

If the output after this command says “Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?” , you need to make sure that everything Docker related is set up and running properly. Even if it’s running properly when printing all Docker engines with docker-machine ls , you may need to set the environment variables for the Docker engine again.

If the build for the Docker image runs successfully, you should be able to list your images with the following command:

This Docker image is everything you need to run a Docker application in a Docker container. One Docker image can be used to start multiple Docker containers which helps to scale application size horizontally or to run applications with different container configuration. For now, we will only run one Docker container based on this Docker image:

This command creates and runs a Docker container with a specific name, a mapping of two ports, and a Docker image. Even though the Dockerfile defines a specific port, we can redirect this to a custom port for this particular Docker container. After creating and running the Docker container based on the Docker image, we should be able to list all Docker containers:

Before we can visit our application in the browser, we need to find out the IP address of our running Docker engine:

Finally you should be able to visit http://192.168.99.100:4680 . Beware that your IP address and port may vary. Congratulations, you have shipped your first Node.js web app in a Docker container.

Recommended articles