Docker Compose运行React/Express项目报Missing script: "dev"但脚本实际存在如何解决
问题根因
错误出在docker-compose.yml中server服务的volumes挂载配置:你配置的- ./server/src/:/app/server会把本地./server/src目录直接覆盖容器内的/app/server工作目录。
你在Dockerfile构建阶段拷贝到/app/server下的package.json、package-lock.json、安装好的node_modules都被本地src目录完全替换,容器运行时工作目录下根本没有package.json文件,自然识别不到dev脚本。本地执行时你是在server根目录运行,目录下存在完整的package.json所以没有问题。
同时你配置的客户端volumes挂载也存在同样的逻辑问题,后续启动客户端也会出现类似报错。
修复方案
- 修改server服务的volumes挂载规则,不要直接覆盖整个工作目录,仅挂载需要热更新的源码子目录即可:
services: server: # 其余配置保留不变 volumes: - ./server/src/:/app/server/src # 可选:添加匿名卷保留node_modules,避免每次构建重复安装依赖 - /app/server/node_modules
- 同步修改client服务的volumes挂载规则,避免覆盖客户端工作目录:
services: client: # 其余配置保留不变 volumes: - ./client/src/:/app/client/src - /app/client/node_modules
验证操作
修改配置后先执行docker-compose down -v删除旧容器和残留匿名卷,再执行docker-compose up --build重新构建启动即可正常运行。
内容的提问来源于stack exchange,提问作者ramy
相关产品推荐
相关产品推荐

