Node.js npm错误!缺稿:发球

Node.js npm错误!缺稿:发球,node.js,docker,Node.js,Docker,启动docker容器时出错。我正在使用nodemon来侦听文件更改 DockerFile FROM node:alpine WORKDIR '/app' COPY package.json . RUN npm install COPY . . CMD ["npm","run","serve"] Package.json { "dependencies": { "express": "*", "nodemon": "*" }, "scrip

启动docker容器时出错。我正在使用nodemon来侦听文件更改

DockerFile

FROM node:alpine
WORKDIR '/app'
COPY package.json .
RUN npm install
COPY . .
CMD ["npm","run","serve"]
Package.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新手,无法找出原因。

在docker文件中进行此更改

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 run -p 3000:8080 -v /app/node_modules -v pwd:/app prac/nodeApp
运行docker容器

docker build -f Dockerfile -t prac/nodeApp .
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运行-v$PWD:/app。。。
码头工人跑-v$(pwd):/app。。。
使用当前目录(分别来自
PWD
环境变量或来自
PWD
命令)作为


我倾向于不推荐这种模式,特别是对于主机依赖性最小且与其他容器交互不多的节点应用程序。只在本地安装节点(如果您还没有)并进行实时开发可能更容易;当您想使用Docker部署应用程序时,请使用已复制到映像中的版本,不要单独使用
-v
选项在其上注入代码。

如何构建docker容器@amrutapl请添加错误,nodemon应该是一个全局依赖项。看起来您的构建命令不正确。devI将workdir更改为一个新值,它工作正常。不确定它是否与/app FROM节点一起工作:alpine WORKDIR'/dir'COPY package.json。运行npm安装副本。CMD[“npm”,“run”,“service”]我刚刚意识到,我的WORKDIR是/dir,但volume是app,最新的package.json总是复制到app,但是如果我将volume改为dir,我会得到相同的错误。如果有帮助,你能试试上面的版本吗?你代码段中的WORKDIR与volume不同,我有相同的东西dir和app,我的问题是,如果workdir和volume是相同的,那么为什么它不工作呢。我试过你的密码,收到$docker文件中缺少{HOME}命令。如果我加上它是有效的。请在你的问题中加上build命令,这会使问题更清楚