create-react-app 热重载仅在子目录中 docker-compose 为 运行 时有效

create-react-app hot-reloading only works when docker-compose is run in subdirectory

我有一个项目,在一个子目录中包含一个 Django Rest Framework 服务器,在第二个子目录中包含一个 create-react-app 应用程序。每个子目录包含一个 Dockerfile。

项目目录有一个docker-compose.yml启动了一个postgres数据库服务和DRF服务。

create-react-app 应用程序子目录有自己的 docker-compose.yml 文件。如果我 cd 到这个子目录并且 运行 docker-compose up,create-react-app 应用服务响应通过热重载应用程序来获取更改。

如果我运行项目目录docker-compose.yml文件中的create-react-app应用服务,create-react-app应用服务不会热重载更改源时的应用程序。

这里是create-react-app应用子目录下的docker-compose.yml:

version: '3'

services:

  admin.ui:
    build:
      context: .
    volumes:
      - '.:/frontend'
      - '/frontend/node_modules'
    ports:
      - "3000:3000"
    environment:
      - CHOKIDAR_USEPOLLING=true
    stdin_open: true
    tty: true
    networks:
      - simpl

networks:
  simpl:
    external:
      name: simpl-games-api_simpl

这是配置 create-react-app 应用服务的项目 docker-compose.yml 部分:

  admin.ui:
    build:
      context: ./simpl_admin_frontend
    volumes:
      - '.:/simpl_admin_frontend/frontend'
      - '/simpl_admin_frontend/frontend/node_modules'
    ports:
      - "3000:3000"
    environment:
      - CHOKIDAR_USEPOLLING=true
    stdin_open: true
    tty: true
    networks:
      - simpl

如何修改项目级别 docker-compose.yml 以支持热重载?

更改项目docker-如下编写启用热重载。

  admin.ui:
    build:
      context: ./simpl_admin_frontend
    volumes:
      - './simpl_admin_frontend:/frontend'
      - '/frontend/node_modules'
    ports:
      - "3000:3000"
    environment:
      - CHOKIDAR_USEPOLLING=true
    stdin_open: true
    tty: true
    networks:
      - simpl

中找到了这个解决方案