When running docker-compose
to launch my app, I'm getting a npm ERR! missing script: start
despite having a start script specified.
package.json is
{
"name": "myapp",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"body-parser": "~1.17.1",
"cookie-parser": "~1.4.3",
"debug": "~2.6.3",
"ejs": "~2.5.6",
"express": "~4.15.2",
"mongoose": "^4.11.1",
"morgan": "~1.8.1",
"serve-favicon": "~2.4.2"
}
}
and docker-compose.yml is
version: "2"
services:
web:
build: .
volumes:
- ./:/app
ports:
- "3500:3500"
2 things are not making sense to me:
Not sure if needed but the Dockerfile is
FROM node:argon
RUN mkdir /app
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
EXPOSE 3500
ENV PORT 3500
CMD ["npm", "start"]
EDIT: I'm using docker run -p 3500:3500 app
and docker-compose up
I'm new to this so may be missing something but am a bit stuck now.
npm ERR! missing script: start Solution: You need to tell npm what to do when you run npm start explicitly by editing package.json. First, identify the main file of your application. Most often it is called index.js, server.js or app.js. When you open package.json in an editor, you can also often find a line like
$ npm start npm ERR! Missing script: "start" This is because while you have a package.json file in your application, the start script is not defined. For most applications, the start script may look as follows:
When you don’t have the package.json file in the current working directory, your console will return a no such file or directory error: When your package.json file doesn’t have the start command under the scripts property, then NPM will run node server.js instead.
The npm start command is used to run the start command written inside your project’s package.json file. When you don’t have the package.json file in the current working directory, your console will return a no such file or directory error: $ npm start npm ERR! enoent ENOENT: no such file or directory, open '/package.json'
You could try removing the volumes section
- ./:/app
It looks like the /app is created within the container, but then subsequently you mount a host directory to /app, thus hiding the original /app in the container.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With