Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

319
Views
Docker: ENTRYPOINT can't execute command because it doesn't find the file

I'm trying to create a container from node js image and I have configured my Dockerfile as shown:

FROM node:boron

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json /usr/src/app
RUN npm install

# Bundle app source
COPY . /usr/src/app

VOLUME ./:/usr/src/app
ENTRYPOINT [ "npm run watch" ]

In the package.json I have a script called watch than runs the gulp task named watch-less.

If I run npm run watch in my local environment the command works but when I try running the container it doesn't and shows the next error:

docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"npm run watch\": executable file not found in $PATH".

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

ENTRYPOINT [ "npm run watch" ]

This is an incorrect json syntax, it's looking for the executable npm run watch, not the executable npm with parameters run and watch:

With the json syntax you need to separate each argument. You can use the shell syntax:

ENTRYPOINT npm run watch

Or you can update the json syntax like (assuming npm is installed in /usr/bin):

ENTRYPOINT [ "/usr/bin/npm", "run", "watch" ]

You also have an incorrect volume definition:

VOLUME ./:/usr/src/app

Dockerfiles cannot specify the how the volume is mounted to the host, only that an anonymous volume is defined at a specific directory location. With a syntax like:

VOLUME /usr/src/app

I've got strong opinions against using a volume definition inside of the Dockerfile described in this blog post. In short, you can define the volume better in a docker-compose.yml, all you can do with a Dockerfile is create anonymous volumes that you'd need to still redefine elsewhere if you want to be able to easily reuse them later.

about 4 years ago · Santiago Trujillo Report

0

If you use the list notation for ENTRYPOINT, that is, with the [brackets], you must separate the arguments properly.

ENTRYPOINT ["npm", "run", "watch"]

Right now it is trying to find a file literally named "npm run watch" and that does not exist.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!