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

Docker Compose Watch能否在Windows的WSL Ubuntu上运行?遇npm未找到错误

问题原因

你的web服务使用的是多阶段构建后的nginx镜像,而nginx镜像中没有安装Node.js和npm,所以执行npm start时会提示npm: not found。虽然Dockerfile第一阶段用了node:16.13.1-slim,但多阶段构建的最终产物是第二阶段的nginx镜像,默认构建时会使用最后一个阶段的镜像。

解决方案

修改docker-compose.yml中web服务的构建配置,指定使用Dockerfile中的react-build阶段(即包含Node.js环境的镜像),具体步骤如下:

  1. 更新web服务的build配置,添加target: react-build参数,同时传递必要的构建参数:
web:
  build:
    context: ./react-nginx
    target: react-build  # 指定使用第一阶段的node镜像
    args:
      REACT_APP_HOST_IP: localhost
      REACT_APP_HOST_PORT: *****  # 替换为你的实际端口
  command: npm start
  develop:
    watch:
      - action: sync
        path: ./react-nginx/src
        target: /app/src
        ignore:
          - node_modules/
      - action: rebuild
        path: ./react-nginx/package.json
  ports:
    - "3000:3000"  # 添加端口映射,方便访问React开发服务器
  1. 重新启动Docker Compose Watch:
docker compose watch
补充说明
  • target: react-build会让Docker构建时停留在第一阶段的镜像,这个镜像基于node:16.13.1-slim,包含完整的Node.js和npm环境,能够正常执行npm start。
  • 当package.json变化时,action: rebuild会重新构建react-build阶段,自动执行npm install更新依赖。
  • 同步src目录到容器的/app/src,React开发服务器会自动检测代码变化并热重载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 01:20:22