use*_*114 10 docker docker-build
文件
FROM node:alpine
COPY ./ ./
RUN npm install
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)
索引.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hi there');
});
app.listen(8080, () => {
console.log("Listening on post 8080");
});
Run Code Online (Sandbox Code Playgroud)
包.json
{
"dependencies": {
"express": "*"
},
"scripts": {
"start": "node index.js"
}
}
Run Code Online (Sandbox Code Playgroud)
码头工人建造。
npm ERR! could not detect node name from path or package
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-11-23T23_36_35_301Z-debug.log
The command '/bin/sh -c npm install' returned a non-zero code: 1
Run Code Online (Sandbox Code Playgroud)
我不明白为什么这不起作用。
Gin*_*pin 13
设置一个WORKDIR然后将您的文件复制到该目录:
FROM node:alpine
WORKDIR /app
COPY ./ /app
RUN npm install
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)
如文档中所述:
该
WORKDIR指令集的工作目录对任何RUN,CMD,ENTRYPOINT,COPY和ADD它后面的Dockerfile说明。如果WORKDIR不存在,即使在任何后续 Dockerfile 指令中未使用它,也会创建它。
在npmGithub 存储库上,此评论中提到了一个类似的错误,作为在包目录之外运行时 npm 无法工作的问题的一部分。它似乎只涉及的新版本node和npm(节点v15.x,NPM v7.0.x作为错误报告的):
全新安装的 Node 15.1.0 和
npm i -g npm@7.0.9,由于某些(可能不相关的)原因无法正常工作。
...Run Code Online (Sandbox Code Playgroud)24 verbose stack TypeError: could not detect node name from path or package ... 28 verbose node v15.1.0 29 verbose npm v7.0.8 30 error could not detect node name from path or package
但是在您的情况下,您确实有一个 package.json,所以这可能是因为build如果没有设置正确的 .json 文件,命令将无法找到它WORKDIR。因此,与其使用 来解决这个问题,不如npm确保始终设置一个WORKDIR. 无论如何都推荐使用WORKDIRDocker 最佳实践部分中提到的:
为了清晰和可靠,您应该始终为您的
WORKDIR. 此外,您应该使用WORKDIR诸如RUN cd … && do-something难以阅读、故障排除和维护之类的激增指令。
| 归档时间: |
|
| 查看次数: |
2292 次 |
| 最近记录: |