You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

docker compose up找不到package.json,但docker run运行正常的问题排查

Docker Compose启动时找不到package.json的原因分析

核心问题:本地卷挂载覆盖容器内置文件,启动时文件未就绪

  • 单独使用docker run运行镜像时,容器内/app目录的内容是镜像构建阶段通过COPY指令复制进去的完整文件集合(包含package.json),没有本地卷覆盖,因此npm可以正常读取文件。
  • 而执行docker compose up时,你配置的volumes: - ./api:/app会在容器启动过程中,将本地项目根目录下的api文件夹挂载到容器内的/app目录,完全替换镜像中原本的/app内容。
  • 当容器启动速度快于本地文件系统的同步速度(比如存在文件缓存、跨设备挂载延迟),容器内/app目录在执行npm run dev时还未同步到package.json,就会触发ENOENT错误。

快速验证方法

修改docker-compose.yaml中的CMD为["sleep", "3600"],启动容器后进入容器查看/app目录:

docker exec -it api_c ls /app

如果此时能看到package.json,则可以确认是启动时文件同步延迟导致的问题;如果仍然看不到,需要检查本地api目录的路径是否正确(从项目根目录执行的话,./api路径是正确的)。

内容的提问来源于stack exchange,提问作者Md. A. A. Apu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:40:00