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

Docker Compose运行TypeScript React单仓应用报错及热更新配置问题

解决TypeScript Monorepo中React前端容器化热更新问题

问题重现

错误1:找不到index.js

执行docker-compose up -d后容器日志报错:

> frontend@0.1.0 start
> react-scripts start

Could not find a required file.
  Name: index.js
  Searched in: /app/src   

错误2:找不到package.json

修改docker-compose配置后,容器日志报错:

ENOENT: no such file or directory, open 'app/package.json'

环境信息

文件夹结构:

repo
 - backend
 - frontend
   - Dockerfile
   - build
   - public
   - src
     - index.tsx
 - docker-compose.yaml

Dockerfile内容:

FROM node
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

问题根源

  1. docker-compose配置拼写错误:将build误写为builds,导致容器构建路径异常,无法正确识别项目文件。
  2. 挂载路径逻辑问题:初始仅挂载src目录,缺少Create React App运行必需的根目录配置文件;全目录挂载后因拼写错误触发路径匹配失败。

正确解决方案

修正docker-compose.yaml配置,同时实现代码热更新:

version: "3.8"
services:
  frontend:
    build: ./frontend  # 修正拼写错误:builds -> build
    ports:
      - '3000:3000'
    volumes:
      - ./frontend:/app  # 同步主机frontend目录到容器/app目录
      - /app/node_modules  # 保留容器内的依赖包,避免被主机目录覆盖
    stdin_open: true
    tty: true

验证效果

执行docker-compose up -d后,容器可正常启动,主机修改frontend/src下的代码时,容器内会自动触发热更新。

临时方案说明

将docker-compose.yml移动到frontend目录下时,挂载路径./会直接映射到容器/app,因此能正常运行,但不利于后续管理Monorepo的多服务配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:25:24