簡體   English   中英

npm 錯誤! 缺少腳本:服務

[英]npm ERR! missing script: serve

啟動 docker 容器時出錯。 我正在使用 nodemon 來監聽文件更改。

文件

FROM node:alpine
WORKDIR '/app'
COPY package.json .
RUN npm install
COPY . .
CMD ["npm","run","serve"]

包.json

{
    "dependencies": {
        "express": "*",
        "nodemon": "*"
    },
    "scripts": {
        "serve": "nodemon index.js",
        "start": "node index.js"
    }
}

構建命令

docker build -f Dockerfile.dev -t test/nodeapp1 .

cmdLine docker cmd ->

docker run -p 3000:8080 -v /app/node_modules -v pwd:/app test/nodeapp1.

我是 docker 新手,無法找出原因。

在您的 dockerfile 中進行此更改

FROM node:alpine

ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV HOME=/home/node/app
ENV PATH="/home/node/.npm-global/bin:${PATH}"

USER node

RUN npm install -g nodemon


RUN mkdir -p ${HOME}
WORKDIR ${HOME}

ADD package.json ${HOME}

RUN cd ${HOME} && npm install

CMD [ "npm" ,"run", "serve" ]

構建 docker 容器

docker build -f Dockerfile -t prac/nodeApp .

運行docker容器

docker run -p 3000:8080 -v /app/node_modules -v pwd:/app prac/nodeApp

將 WORKDIR 更改為新值有效。

FROM node:alpine

WORKDIR '/dir'

COPY package.json .

RUN npm install

COPY . .

CMD [ "npm" ,"run", "serve" ]

你的docker run -v選項是錯誤的。 你可能真的想寫

docker run ... -v $PWD:/app ...
docker run ... -v $(pwd):/app ...

使用當前目錄(分別來自PWD環境變量或pwd命令)作為綁定安裝

我傾向於不推薦這種模式,特別是對於主機依賴關系很小並且您與其他容器交互不多的 Node 應用程序。 僅在本地安裝 Node(如果您還沒有它)並針對它進行實時開發可能更容易; 當您想使用 Docker 部署應用程序時,請使用您COPY到映像中的版本,並且不要單獨使用-v選項在其上注入您的代碼。

暫無
暫無

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

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