Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Run Node/NPM in a Docker container
# For example, run "npm install"
docker run -v "$PWD":/usr/src/app -w /usr/src/app node:4 npm install
# This command creates a container (downloading one first if you don't have it locally), runs the command in a current directory and quits the container
# Great Success!
Copy link

feload commented Apr 21, 2017

Nice one!

Copy link


Copy link

Thanks very much. Based on this I created a build command, using current node container (alpine, because it is smaller) and chaining two npm commands together:

docker run -v "$PWD":/usr/src/app -w /usr/src/app node:alpine sh -c 'npm install && npm run dist'

Copy link


Copy link

bertalanimre commented Jan 10, 2018

With the latest LTS version:
sudo docker run -v $(pwd):/usr/src/app -w /usr/src/app node:8.9.4 npm install

👍 👍

Copy link

t3ran13 commented Apr 22, 2018

for docker in windows

docker run -v c:\path_to_app:/usr/src/app -w /usr/src/app node:8.9.4 bash -c "npm install"

Copy link

giansalex commented May 26, 2018

For Windows (CMD)

docker run --rm -v "%cd%":/app -w /app node:alpine npm i

Copy link

patoi commented Oct 31, 2018

On MacOS/Linux with NodeJS 10 LTS:

docker run --user $(id -u):$(id -g) -v $PWD:/app -v $PWD/.npm:/.npm -v $PWD/.config:/.config -w /app node:10.12.0-alpine npm install

Copy link

Nice work

Copy link

Why not create a file named 'npm' in '/usr/local/bin' with:

docker run --rm -i --user=$UID:1000 --name=npm-executable -w /usr/app -v $PWD:/usr/app node:10 npm "$@"

sudo chmod +x /usr/local/bin/npm

now you can use npm install, npm run anything, etc.

Copy link

Hello, I'm new to Docker and lost in your instructions...
What are we supposed to put instead of the c:\path_to_app and the /usr/src/app expressions ?

Thanks for the help !

Copy link

@clrmahieu you only have to replace the c:\path_to_app with the full path for your app root folder, usually it's your current path where you have your package.json file.

Copy link

Dzhuneyt commented Mar 11, 2021

On MacOS/Linux with NodeJS 10 LTS:

docker run --user $(id -u):$(id -g) -v $PWD:/app -v $PWD/.npm:/.npm -v $PWD/.config:/.config -w /app node:10.12.0-alpine npm install

This creates 2 folders .npm and .config within the current project's directory. I would avoid this since you can easily include them in the next commits by mistake.

A better alternative is to mount these folders from your user's home directory:

docker run --user $(id -u):$(id -g) -v $PWD:/app -v $HOME/.npm:/.npm -v $HOME/.config:/.config -w /app node:10.12.0-alpine npm install

Copy link

MkLHX commented Mar 22, 2021

Hi there!
There a way to store in VSCode the command line syntaxe to run npm run build from docker container?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment