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

Docker中webpack-dev-server问题:本地node_modules目录为空

问题原因与解决方案

为什么宿主机器上的/root-app/dashboard/node_modules是空的?

这其实是Docker挂载卷的机制导致的,咱们一步步拆解:

  1. 容器构建阶段:你的dashboard/Dockerfile里通过RUN yarn install在容器的/usr/src/app目录下生成了完整的node_modules,这部分是没问题的。
  2. 容器启动阶段:docker-compose.yml里的两个volume配置起了作用:
    • - ./dashboard:/usr/src/app:把宿主机器的./dashboard目录挂载到容器的/usr/src/app,此时宿主目录的内容会覆盖容器目录的对应内容,但有个例外——
    • - /usr/src/app/node_modules:这是一个匿名卷,它会把容器内的/usr/src/app/node_modules目录独立出来,不被宿主挂载的目录覆盖,保证容器里的依赖能正常使用。
  3. 宿主目录出现空node_modules的原因:Docker为了保持容器内的目录结构一致,会自动在宿主的./dashboard目录下创建node_modules目录,但这个目录只是一个空的占位符,因为容器里真正的node_modules存储在匿名卷中,不会同步到宿主目录。

如何解决(根据你的需求选择)

如果你希望宿主机器上也有完整的node_modules:

  • 直接在宿主的/root-app/dashboard目录下执行yarn install,手动生成依赖目录。
  • 或者修改docker-compose.yml的volume配置,把宿主的node_modules挂载到容器:
    volumes:
      - ./dashboard:/usr/src/app
      - ./dashboard/node_modules:/usr/src/app/node_modules
    
    这种情况下,你可以去掉Dockerfile里的RUN yarn install,直接在宿主安装依赖后共享给容器。

如果你不需要宿主机器上有node_modules:

  • 完全不用管这个空目录!容器里的依赖是存储在匿名卷中的,不会影响应用运行,这个空目录只是Docker自动创建的占位符而已。

内容的提问来源于stack exchange,提问作者Pavel Perevezencev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:39:17