Using Docker for Node.js in Development

There’s an issue with npm have been stuck for a few days. It’s you have to build the node_modules at build time, otherwise it’s not accessible at runtime. And finally found a solution on

Here’s another best practice adjustment: Copy your package.json and package-lock.json before you copy your code into the container. Docker will cache installed node_modules as a separate layer, then, if you change your app code and execute the build command, the node_modules will not be installed again if you did not change package.json. Generally speaking, even if you forget to add those line, you will not encounter a lot of problems. Usually, you will need to run a docker build only when your package.json was changed, which leads you to install from scratch anyway. In other cases, you don’t run docker build too often after your initial build in the development environment.

In another word, Having

COPY package*.json ./
RUN npm install

in your Dockerfile to do the npm install. Then in the docker-compose.yml

build: .
- .:/usr/src/app
- /usr/src/app/node_modules
command: npm start

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s