繁体   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