2017-07-14 215 views
2

這太令人困惑了。Docker進入點/ CMD找不到文件

我有這個簡單的Dockerfile,它採用NPM安裝到依賴安裝到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 

這是很奇怪的,我已經使用泊塢窗一段時間了,和避風港」我以前看過類似的東西。任何人都知道可能會是什麼?似乎很清楚,該文件丟失了,但我無法弄清楚爲什麼會這樣。尤其是考慮到我使用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 

如何離奇。

回答

0

哦該死的,所以在碼頭建造步驟中,文件在那裏,並且ls -a透露。

但是,當我與碼頭工人跑跑步,我有這樣的:

docker run -v "${project_root}/node_modules":/usr/src/app --name ${container_name} ${image_tag} 

所以node_modules DIR在容器被覆蓋從容器外部的node_modules它沒有足夠的suman目錄。

我的壞傢伙。