在运行Docker容器时,npm安装失败
我试图通过docker容器运行npm install
,使用:
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容器,它工作正常,所以它似乎是一个问题,在安装的卷上运行它。
我真的不知道如何解决这个问题,无论是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
,然后在shell中运行npm install
,但同样的事情发生。
更新2
我忘了提及…我使用docker机在OSX上。 docker机VM是VMWare Fusion,因为基于VirtualBox的机器有性能问题。 不过,我刚刚尝试了启动Virtualbox机器并运行该命令并成功完成 – 因此它看起来像是VMWare Fusion特有的。
这给出了回答问题的指导。
(1)尝试使用node:5.9.1排除yeoman图像的任何问题
(2) RUN
ENTRYPOINT
RUN- npm install
在Dockerfile
中使用RUN
进行npm install
,在Docker构build过程中进行npm install
,并将节点模块保存在映像中。 这很好,除非你想装载node_modules
文件夹。 将node_modules
到主机将覆盖它。 使用volumes_from
挂载到另一个容器是可以的
入口点 – 使用ENTRYPOINT
进行npm install
,将npm install
作为CLI docker run
命令的一部分。 安装node_modules
时,这很好。
(我不能工作,如果你正在装载node_modules)。
(3)简单
另外,你可能想从你的package.json
删除任何看起来有问题的软件包,然后再重新引入它们,然后你就可以find确切的问题。
- 如何使用端口转发使用DNS名称连接到docker容器
- 是否有可能在docker文件的中间执行CMD?
- 无法在Docker Entrypoint命令中使用variables
- 清除process_execution,实例和instance_label_map数据?
- 在Docker-image microsoft / aspnetcore-build:1.1.0-msbuild中构buildASP.NET Core 1.1 preview4项目
- 从主机ip访问具有随机端口的docker容器
- 当存在两个具有相同泊坞窗图像的作业时,gitlab-runner注册一个泊坞窗图像执行另一个
- 在artifactory中将Docker存储库configuration为子域
- 无法加载dynamic库“oci8.so”(PHP 7.2)