簡體   English   中英

npm ERR! 缺少腳本:Docker啟動錯誤

[英]npm ERR! missing script: start error with Docker

當運行docker-compose啟動我的應用程序時,我收到一個npm ERR! missing script: start 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"
  }
}

和docker-compose.yml是

version: "2"
services:
  web:
    build: .
    volumes:
      - ./:/app
    ports:
      - "3500:3500"

有兩件事對我來說沒有意義:

  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"]

編輯:我正在使用docker run -p 3500:3500 appdocker-compose up

我對此並不陌生,因此可能會丟失一些東西,但現在有點卡住了。

您可以嘗試刪除卷部分- ./:/app
看起來/ app是在容器中創建的,但是隨后您將主機目錄掛載到/ app,從而將原始的/ app隱藏在容器中。

您收到的錯誤是您看不到./bin/www目錄。

請按照以下步驟操作。

  1. 是否存在./bin/www目錄。
  2. 如果沒有。 你必須創建。
  3. 如果有。 您必須檢查它是否正在運行。

希望對您有所幫助。

"docker":xxxxx
"docker-build":xxxxx

像這樣的地雷

"docker": "node --experimental-modules ./signal-server",
"docker-build": "docker build -t node-web-development/signalauth ."

您的包json文件

檢查與定義“開始”腳本docker-compose.yml文件所在的目錄中是否存在package.json文件。 如果不是,那可能是導致錯誤的原因,因為您正在將當前目錄裝載到容器的應用程序目錄中。 更好的設置是將節點應用程序放在其自己的子目錄中,並在其中放置docker-compose文件。 然后,可以通過將其提供給docker-compose.yml文件的build條目來指向您的節點應用程序目錄:

version: "2"
services:
  web:
    build: ./yourNodeAppDir
    volumes:
      - ./:/app # is this necessary?
    ports:
      - "3500:3500"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM