如何在 ReactJS Docker 中热重载

use*_*401 8 python node.js docker reactjs

这听起来可能很简单,但我有这个问题。

我有两个docker容器在运行。一个是我的front-end,另一个是我的backend服务。

这些是Dockerfile两个服务的s。

前端 Dockerfile

# Use an official node runtime as a parent image
FROM node:8

WORKDIR /app

# Install dependencies
COPY package.json /app

RUN npm install --silent

# Add rest of the client code
COPY . /app

EXPOSE 3000

CMD npm start
Run Code Online (Sandbox Code Playgroud)

后端 Dockerfile

FROM python:3.7.7

WORKDIR /usr/src/app

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

COPY server.py /usr/src/app
COPY . /usr/src/app

EXPOSE 8083

# CMD ["python3", "-m",  "http.server", "8080"]
CMD ["python3", "./server.py"]
Run Code Online (Sandbox Code Playgroud)

我正在构建图像docker-compose.yaml如下:

version: "3.2"

services:

  frontend:
    build: ./frontend
    ports:
      - 80:3000
    depends_on: 
      - backend

  backend: 
    build: ./backends/banuka
    ports: 
      - 8080:8083
Run Code Online (Sandbox Code Playgroud)

Update每当前端或后端发生变化时,我该如何制作这两项服务

我找到了这个 repo,它是reactjs,python-flask和的样板posgresel,它表示它已Hot reloadreactjs前端和python-flask后端启用。但我找不到与此相关的任何内容。有人能帮我吗?

回购链接

我想要的是:每次代码更改后,容器应该自动更新!

Ati*_*ngh 16

在你的 docker-compose.yml 中试试这个

version: "3.2"

services:

  frontend:
    build: ./frontend
    environment:
      CHOKIDAR_USEPOLLING: "true"
    volumes:
      - /app/node_modules
      - ./frontend:/app
    ports:
      - 80:3000
    depends_on: 
      - backend

  backend: 
    build: ./backends/banuka
    environment:
      CHOKIDAR_USEPOLLING: "true"
    volumes:
      - ./backends/banuka:/app    
    ports: 
      - 8080:8083
Run Code Online (Sandbox Code Playgroud)

基本上,您需要 chokidar 环境来启用热重载,并且您需要卷绑定来使您机器上的代码与容器中的代码进行通信。看看这是否有效。

  • 请注意,从“react-scripts”的“5.xx”版本开始,您必须将变量“CHOKIDAR_USEPOLLING”替换为“WATCHPACK_POLLING”(这是一个直接替换)。请参阅https://github.com/facebook/create-react-app/issues/12397 (8认同)