Node.js npm错误!缺稿:发球
启动docker容器时出错。我正在使用nodemon来侦听文件更改 DockerFileNode.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
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命令,这会使问题更清楚