npm ERR! missing script: start error with Docker

11,675

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.

Share:
11,675
mcansado
Author by

mcansado

Looking forward to when I know enough to answer other people's Ethereum questions. Until then...

Updated on June 09, 2022

Comments

  • mcansado
    mcansado almost 2 years

    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:

    1. Launching the app with its Dockerfile works: if the missing start script really was the problem, shouldn't this fail as well?
    2. package.json does have a start script as you can see above

    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.