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

Express Docker容器本地运行正常 云部署报错找不到/src/package.json

问题定位

核心问题出在你docker-compose配置里的开发环境专属volumes挂载,在生产部署场景下导致了路径覆盖问题:

  1. 你的部署流程里只把打包好的镜像推送到了Docker Hub,并没有把Express源码上传到云主机的执行目录
  2. 你Dockerfile构建的镜像里本来已经把package.json和所有源码放到了/src路径下,单独运行镜像正常也能证明这一点
  3. docker-compose里保留了本地开发用的volumes配置:
    • 如果你实际配置是把当前目录挂载到了/src(大概率是配置笔误),云主机空的执行目录会直接覆盖容器内的/src路径,镜像里原有的package.json就会被清空,自然npm找不到文件
    • 就算你挂载的是到/src/app,这个配置在生产环境也完全多余,不会用到还可能引发相对路径引用错误

解决方案

直接删除docker-compose中express服务的volumes配置段即可,你打包好的镜像已经包含了所有运行需要的代码、依赖,不需要挂载宿主机的任何文件。

调整后的express服务配置参考:

express:
        container_name: express_server
        networks:
            - client
            - server
        image: "bork/server:latest"
        command: npm run start
        ports:
            - 3000:3000
        env_file:
            - config/.env.express

额外注意事项

你Dockerfile里默认启动命令是npm run startdev,docker-compose里覆盖成了npm run start,请确认你的package.json的scripts配置中存在start命令,避免后续启动报错。


内容的提问来源于stack exchange,提问作者Cameron Davis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:54:04