npm ERR!缺少脚本:Docker启动错误

mca*_*ado 6 node.js npm docker docker-compose

在运行docker-compose以启动我的应用程序时,npm ERR! missing script: start尽管指定了启动脚本,但还是得到了提示。

package.json是

{
  "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"
  }
}
Run Code Online (Sandbox Code Playgroud)

和docker-compose.yml是

version: "2"
services:
  web:
    build: .
    volumes:
      - ./:/app
    ports:
      - "3500:3500"
Run Code Online (Sandbox Code Playgroud)

有两件事对我来说没有意义:

  1. 使用Dockerfile启动应用程序是可行的:如果确实缺少启动脚本,这是否也应该失败?
  2. 如上所示,package.json确实有一个启动脚本

不确定是否需要,但Dockerfile是

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"]
Run Code Online (Sandbox Code Playgroud)

编辑:我正在使用docker run -p 3500:3500 appdocker-compose up

我对此并不陌生,因此可能会丢失一些东西,但现在有点卡住了。

cac*_*sme 5

您可以尝试删除卷部分 - ./:/app
看起来 /app 是在容器中创建的,但随后您将主机目录挂载到 /app,从而将原始 /app 隐藏在容器中。