【发布时间】:2017-12-20 03:38:00
【问题描述】:
这太令人困惑了。
我有这个简单的 Dockerfile,它使用 npm install 将依赖项安装到 node_modules 中:
FROM node:7
RUN chmod -R 777 $(npm root -g)
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
RUN npm install github:sumanjs/suman#rebase_branch
COPY . .
RUN (cd node_modules && ls -a) # 1 this logs expected stuff
RUN (cd node_modules/suman && ls -a) # 2 this logs expected stuff
CMD ["node","/usr/src/app/node_modules/suman/cli.js"]
运行后文件似乎很明显
cd node_modules/suman && ls -a
但由于某种原因我收到错误:
module.js:472
throw err;
^
Error: Cannot find module '/usr/src/app/node_modules/suman/cli.js'
at Function.Module._resolveFilename (module.js:470:15)
at Function.Module._load (module.js:418:25)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:427:7)
at startup (bootstrap_node.js:151:9)
at bootstrap_node.js:542:3
如果我像这样使用 ENTRYPOINT:
ENTRYPOINT ["/usr/src/app/node_modules/suman/cli.js"]
(cli.js 有一个 hashbang)
我收到类似的错误:
container_linux.go:262: starting container process caused "exec: \"/usr/src/app/node_modules/suman/cli.js\": stat /usr/src/app/node_modules/suman/cli.js: no such file or directory"
docker: Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused "exec: \"/usr/src/app/node_modules/suman/cli.js\": stat /usr/src/app/node_modules/suman/cli.js: no such file or directory".
ERRO[0001] error waiting for container: context canceled
这对我来说很奇怪,我现在使用 Docker 有一段时间了,之前还没有见过这样的东西。有谁知道可能会发生什么?文件丢失似乎很清楚,但我一生都无法弄清楚为什么会这样。特别是考虑到当我使用ls -a 时,该文件似乎存在。
为了证明给你看,这是第二个 ls -a 命令的输出:
Step 10/11 : RUN (cd node_modules/suman && ls -a)
---> Running in 0715d56e23a9
.
..
.babelrc
.npmignore
.tscmultiwatch
README.md
cli
cli.d.ts
cli.js <<< dis my file
config
dist
dts
examples
lib
package.json
scripts
webpack.config.js
多么奇怪。
【问题讨论】:
标签: node.js docker npm dockerfile