Docker构建时npm install失败,提示的日志文件不存在如何排查
Docker构建npm install失败且日志文件不存在的原因
问题场景
我是Docker新手,执行Dockerfile里的npm install时失败,系统提示查看指定日志文件,但该文件不存在。构建日志如下:
=> ERROR [app 9/10] RUN npm config set cafile zscaler.cer && npm install 73.1s ------ > [app 9/10] RUN npm config set cafile zscaler.cer && npm install: 73.02 npm error Exit handler never called! 73.02 npm error This is an error with npm itself. Please report this error at: 73.02 npm error <https://github.com/npm/cli/issues> 73.02 73.04 73.04 npm error A complete log of this run can be found in: /root/.npm/_logs/2024-07-03T07_16_45_863Z-debug-0.log ------ failed to solve: process "/bin/sh -c npm config set cafile zscaler.cer && npm install" did not complete successfully: exit code: 1 me@vm:/app$ sudo tail /root/.npm/_logs/2024-07-03T07_16_45_863Z-debug-0.log tail: cannot open '/root/.npm/_logs/2024-07-03T07_16_45_863Z-debug-0.log' for reading: No such file or directory
我用sudo启动docker compose,认为不是权限问题,但不确定,请问日志文件未创建的原因是什么?
原因分析
- 日志路径属于容器内部,而非宿主机:npm报错中给出的
/root/.npm/_logs/...是Docker构建阶段临时容器内的路径,不是你当前操作的宿主机路径。构建失败后,这个临时容器会被自动清理,因此你在宿主机上找不到该文件。 - npm异常中断导致日志未写入:报错信息里的
Exit handler never called!说明npm进程是异常终止的(比如网络超时、资源耗尽、依赖下载失败触发强制中断),这种情况下npm可能还没完成日志文件的写入就崩溃了,容器内也不会生成完整的日志文件。 - 权限问题仍需排查:虽然用sudo启动docker compose,但如果Dockerfile中通过
USER指令切换到了非root用户,那么该用户对容器内的/root/.npm路径没有写入权限,也会导致日志无法生成。
内容的提问来源于stack exchange,提问作者François MENTEC
相关产品推荐
相关产品推荐

