How to Run NodeJS through Docker

In this article I show you how to run NodeJS through Docker.

Step 1. Install Docker

Step 2. Pull a node image

Open up a command / terminal window and run the following:

docker pull node:buster-slim

Step 3. Run your tests

If you have a NodeJS project with some tests, here is how you can run them through Docker:

  • Change the directory to the root of your NodeJS project folder
  • Run your tests with this command:
    docker run -v "$PWD":/usr/src/app -w /usr/src/app node:buster-slim sh -c 'npm install && npm test'
    

Step 4. Understand the docker run command

In this step I’ll break down what the docker run command in the previous step actually does:

  • -v "$PWD":/usr/src/app

The docker run command sets up a shared volume using the -v flag.

  • $PWD means use present working directory - in other words the folder you are currently in
  • It then maps that folder to the folder within the docker container (/usr/src/app)
  • When node and npm are run inside the container, they will expect the root of the project to be in that folder

  • -w /usr/src/app

The -w flag sets the working directory inside the container.

  • node:buster-slim

The version of the node docker image that we’d like to use. In this case the version is buster-slim.

Buster is a version of Linux. Slim usually means the base image has been slimmed down to just the essentials. Which should cause it to load faster.

The image was already downloaded using the pull command. If it wasn’t you would have seen it download the first time you used the docker run command.

  • sh -c 'npm install && npm test'

This shells into the container and runs the command.

The command first runs npm install, then npm test.

Step 5. Confirm the results on your screen

After the command runs you should see the test results echoed to your screen. It should work exactly as if you were running node locally.

Troubleshooting

If you need to use a particular version of node, visit the official page for the docker image:

Replace buster-slim with whatever version from the list that you need.

Conclusion

In this article I showed you how to run NodeJS locally, but through a docker container.

You also learned how to:

  • Download a docker image of node using the docker pull command
  • Run a docker image with extra parameters
  • Map a folder in a docker container to a local folder
  • Set the working directory of a container through the command line
  • Pass shell commands to a docker container and see their results locally

Sometimes you run into problems trying to install and run tools like NodeJS on your local machine. Or you may need to use a version that is different from what you have installed. A quick solution is to just run NodeJS through docker.

This article only showed one example of passing arguments to a NodeJS docker container. Any command you use locally to run npm or nodejs should work as well.

References

  • hub.docker.com/_/node [1]



About the Author

Mitch Allen tests cloud services for a robotics company in New England.