在 docker 上 React 热重载-compose 在 Windows 上失败

Hot reload on React with docker-compose failing on Windows

我正在尝试让 React 在保存文件时更改网站内容。

我正在使用没有安全写入的 VS 代码。我正在通过 Docker 桌面在 Windows 上使用 docker-compose。

Docker文件:

FROM node:17-alpine
WORKDIR /front

ARG FRONT_CMD
ARG API_HOSTNAME

ENV REACT_APP_API_HOSTNAME=$API_HOSTNAME

COPY . .
RUN npm i @emotion/react @emotion/styled
CMD $FRONT_CMD

docker-compose.yml的相关部分:

  frontend:
    volumes:
      - ./frontend/src:/front/src
      - /front/node_modules
    build:
      context: ./frontend
      dockerfile: Dockerfile
      args:
        - FRONT_CMD=${FRONT_CMD}
        - API_HOSTNAME=${API_HOSTNAME}
    env_file:
        - .env.dev
    networks:
      - internal
    environment:
        - CHOKIDAR_USEPOLLING=true
        - FAST_REFRESH=false
        - NODE_ENV=development

一切都运行落后于traefik。 CHOKIDAR_USEPOLLING 和 FAST_REFRESH 似乎没有区别,我从“docker-compose --env-file ..env.dev up”开始 - 在文件 FRONT_CMD="npm start" 表现得很好。 Env.dev 应该清楚地指示 React 的开发构建(并且在不添加的情况下工作相同),但我添加了 NODE_ENV 只是为了安全起见。我尝试将它们全部添加到构建环境中,只是非常确定,但没有任何变化。 React 文件位于 'frontend' 文件夹中,与 docker-compose.yml.

位于同一位置

每次 React 都说它编译成功并警告我这是一个开发版本。

我唯一怀疑的是,在本地使用 Windows 更新文件时存在一些问题,而 docker 使用 Linux,但我不知道从那里去哪里,即使原来如此。

我发现的最短方法是从另一端开始,即将编辑器附加到容器,而不是根据系统文件的更改更新容器。我按照这里的指南操作:https://code.visualstudio.com/docs/remote/attach-container