Docker Create react应用程序热重新加载不工作

3lxsmp7m  于 2022-11-03  发布在  Docker
关注(0)|答案(2)|浏览(194)

我尝试使用Create React App和Node js在Docker中设置开发环境,但是当我更改代码时,它无法重新加载更改
通常只使用卷就足够了,但我还补充道:CHOKIDAR_USEPOLLING=true在ENV中,正如create react应用官方文档所述,我将代码移到了WSL,因为我使用的是Windows 10,但仍然相同。我创建了另一个带有create react应用的项目,并使用DOCKER与CHOKIDAR_USEPOLLING=true,工作正常,但当我添加更多服务时,不再工作。

这是我的停靠合成文件。

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都是在创建React应用程序,都不工作.
FROM node:10
WORKDIR /var/app/
COPY package.json /var/app/package.json
RUN npm install

COPY . .

CMD ["npm","start"]

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

2w2cym1i

2w2cym1i1#

固定的
这个问题出现在文件Dockerfile中,工作目录是/var/app/,而在我的docker-compose.yml中,我将当前工作目录安装到/var/app/frontend,我只是删除了 /frontend,工作正常。

v7pvogib

v7pvogib2#

标记的正确答案不会为每个人解决这个问题。因为简单的提问者修复它在他自己的方式在Dockerfile安装节点模块在这个容器使用额外的工作。
问题是Docker绑定挂载设置错误。这就是为什么jetpack reactions节点模块没有重新加载到Docker容器上的原因。
“:“表示绑定装载
没有“:“简直是胡说八道。
卷数:

- ./frontstore:/var/app/frontstore (this is correct)

  - /var/app/frontstore/node_modules (I don't know what is the point of this, this is not bind mount, this line have no meaning. )  

  - ./youtbackendfolder/node_modules:/yourappfolder/node_modules (this will make hot reload work) don't forget rebuild image and container

相关问题