Docker 创建反应应用程序热重载不起作用

Posted

技术标签:

【中文标题】Docker 创建反应应用程序热重载不起作用【英文标题】:Docker Create react app hot reload not working 【发布时间】:2020-02-18 20:52:25 【问题描述】:

我正在尝试使用 Create React App 和 Node js 在 Docker 中设置开发环境。 但是当我更改代码时,它不会重新加载更改

通常只使用卷就足够了,但我还添加了: CHOKIDAR_USEPOLLING=真 在 ENV 中,正如 create react app 官方文档所说,我将代码移至 WSL,因为我在 Windows 10 上,但仍然相同。 我使用 create react app 创建了另一个项目,并使用了带有 CHOKIDAR_USEPOLLING=true 的 docker 并且工作正常,但是当我添加更多服务时将不再工作。

这是我的 docker-compose 文件。


version: '3.3'
services:
  backend:
    image: node
    build:
      context: ./salesbackend/
    ports: 
      - 5000:3001
    env_file: ./salesbackend/.env
    volumes:
      - ./salesbackend:/var/app/salesbackend
      - /var/app/salesbackend/node_modules
    depends_on: 
      - mongo
  frontstore:
    build:
      context: ./frontstore/
    ports:
      - 5001:3000
      - 5002:3003
    env_file: ./frontstore/.env
    environment:
      - NODE_ENV=development
      - CHOKIDAR_USEPOLLING=true
    volumes: 
      - ./frontstore:/var/app/frontstore
      - /var/app/frontstore/node_modules
    depends_on: 
      - backend
  frontend:
    build:
      context: ./frontend/
    ports:
      - 5003:4000
    env_file: ./frontend/.env
    environment:
      - NODE_ENV=development
      - CHOKIDAR_USEPOLLING=true
    volumes: 
      - ./frontend:/var/app/frontend
      - /var/app/frontend/node_modules

  mongo:
    image: mongo
    volumes: 
      - ./db/:/data/db
    ports:
      - 30000:27017

这是我用于前端服务的 Dockerfile,

-> Frontend 和 Frontstore 都是在 create react app 中创建的,并且都无法正常工作。

FROM node:10
WORKDIR /var/app/
COPY package.json /var/app/package.json
RUN npm install

COPY . .

CMD ["npm","start"]

使用 docker-compose up 效果很好,当我编辑在 NestJS 中构建的后端时,会更改自动重新加载,但对于 create-react-app 则不行。

【问题讨论】:

【参考方案1】:

已修复

这个问题是 在文件 Dockerfile 中 工作目录是/var/app/ 在我的 docker-compose.yml 中,我将当前工作目录挂载到 /var/app/frontend,我只是删除了那个 /frontend 并且工作正常。

【讨论】:

以上是关于Docker 创建反应应用程序热重载不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 jetstream 热重载和浏览器同步不起作用

使用 Visual Studio Code 保存文件创建新应用后,热重载不起作用

颤振热重载和热重启不起作用

颤振热重载不起作用。需要帮助

在物理设备中运行时,Flutter 中的热重载不起作用

Android Studio Flutter 热重载按钮不起作用