Docker Compose启动报错找不到/app下package.json但单独docker构建正常
问题根因
错误出在docker-compose.yml的卷挂载配置逻辑冲突:
- 构建阶段:你指定的构建上下文是
frontend目录,Dockerfile会把该目录下的package.json和项目代码正常复制到容器内的/app路径,所以yarn install步骤可以正常执行。 - 启动阶段:volumes配置里的
.:/app会把宿主机当前目录(也就是docker-compose.yml所在的根目录,该目录下只有README、docker-compose.yml和frontend子文件夹,没有package.json)直接覆盖容器内的/app路径,导致容器启动时读取不到镜像里已经存在的项目文件。
修复方案
二选一即可:
- 如果你需要本地开发热更新功能,修改volumes配置,将宿主机的frontend目录挂载到容器的/app路径:
volumes: - './frontend:/app' - '/app/node_modules'
- 如果你不需要本地热更新,直接删除整个volumes配置块,容器会直接使用镜像内构建好的文件运行。
生效步骤
修改配置后先执行docker-compose down -v清理旧的挂载卷,再执行docker-compose up --build重新启动即可正常运行。
内容的提问来源于stack exchange,提问作者hoang
相关产品推荐
相关产品推荐

