2016-03-29 129 views
1

我試圖通過一個泊塢窗容器來運行npm install運行時,使用失敗:NPM安裝過碼頭工人,容器

docker run -it --rm -v $(pwd):/src cthulhu666/yeoman npm install 

但它總是失敗,並沿着以下的行的消息:

85351 error node v5.5.0 
85352 error npm v3.3.12 
85353 error path /src/node_modules/.defaults.DELETE/node_modules/clone 
85354 error code ENOENT 
85355 error errno -2 
85356 error syscall rename 
85357 error enoent ENOENT: no such file or directory, rename '/src/node_modules/.defaults.DELETE/node_modules/clone' -> '/src/node_modules/defaults/node_modules/clone' 
85357 error enoent This is most likely not a problem with npm itself 
85357 error enoent and is related to npm not being able to find a file. 

我說「沿着線」,因爲它並不總是這個文件......幾天前,當我試圖在一個不同的文件上失敗時。

我試着在不同的機器上,使用相同的package.json,並使用全局npm install而不是通過docker容器,它工作正常,所以它似乎是在裝入的捲上運行它的問題。

我真的不知道如何解決這個雖然 - 無論它是一個碼頭工人的問題,一個問題NPM或別的東西完全...

(以防萬一它是有用的,這是的package.json: https://github.com/roots/sage/blob/master/package.json

更新1

我試着運行docker run -it --rm -v $(pwd):/src cthulhu666/yeoman /bin/bash,然後運行在外殼npm install但同樣的事情發生。

更新2

我忘了提...我在OSX使用泊塢窗機。由於基於VirtualBox的機器存在性能問題,因此碼頭機VM是VMWare Fusion。不過,我剛剛嘗試了啓動Virtualbox機器並運行該命令併成功完成 - 因此它看起來像是VMWare Fusion特有的。

+0

您是否嘗試過創建Dockerfile,您可以在其中發出npm install,然後創建映像,然後發出docker run以啓動處理? ...只是爲了獲得樂趣,可以在上面的docker運行命令中替換npm install,然後在交互式終端提示符下手動發出npm install或者更有自由排除故障的地方 –

+0

運行/ bin/bash shell並運氣不佳然後在裏面運行npm install,我仍然得到相同的錯誤。我不確定你是否意圖創建另一個Dockerfile ......?我已經嘗試創建基於node5-slim的自己的圖像,但它做同樣的事情... –

+0

npm install命令僅適用於當前目錄包含名爲package.json的文件...因此,在使用bash啓動時ls -la顯示文件,也許你首先需要cd到其他目錄 –

回答

0

這給出了回答問題的指導。

(1)儘量使用節點:5.9.1排除與自耕農圖像的任何問題

(2)RUN v ENTRYPOINT

RUN - 使用RUNnpm installDockerfile確實在npm install Docker構建過程並將節點模塊保存在圖像中。這很好,除非你想安裝node_modules文件夾。安裝node_modules到主機將覆蓋它。使用ENTRYPOINT是否npm install作爲CLI docker run命令的一部分npm install - 它安裝到使用volumes_from另一個容器是確定

入口點。安裝node_modules時這很好。

(如果您正在安裝node_modules,我無法解決問題)。

(3)簡化

此外,您可能想從你的package.json刪除任何程序包,這似乎是有問題的,並重新引入他們一次一個,那麼你就可以得到精確的問題。

+0

謝謝@ danday74,今天下午我會試試這些觀點。 奇怪的是,它在VirtualBox虛擬機上工作正常,或者只是在Docker之外運行NPM安裝。建議這是VMWareFusion碼頭機的問題... –