ืจืงืข

ื‘ืžื”ืœืš ืชืจื’ื•ืœ Bind Mounts (ื•ื›ืœ ืคืจื•ื™ืงื˜ ืฉืžืฉืชืžืฉ ื‘ึพCreate React App ืขื Hot Reloading), ื™ื™ืชื›ืŸ ืฉืชื™ืชืงืœื• ื‘ื‘ืขื™ื” ืฉื‘ื” ื”ึพHot Reloading ืœื ืขื•ื‘ื“ ื›ืžืฆื•ืคื” ื‘ืขืช ื”ืจืฆืช ื”ืงื•ื ื˜ื™ื™ื ืจ ืฉื ื‘ื ื” ืžึพDockerfile.dev.

ืื ื’ื ืืฆืœื›ื ื”ืฉื™ื ื•ื™ื™ื ื‘ืงื•ื“ ืื™ื ื ืžืชืขื“ื›ื ื™ื ื‘ื“ืคื“ืคืŸ โ€” ืงื™ื™ืžื•ืช ืฉืชื™ ืืคืฉืจื•ื™ื•ืช ืœืคืชืจื•ืŸ.


ืคืชืจื•ืŸ 1 โ€” ื”ื•ืกืคืช ืžืฉืชื ื™ ืกื‘ื™ื‘ื” ื‘ื–ืžืŸ ื”ืจืฆืช ื”ืงื•ื ื˜ื™ื™ื ืจ

ื ื™ืชืŸ ืœื”ืฉืื™ืจ ืืช Dockerfile.dev ื›ืคื™ ืฉืžื•ืฆื’ ื‘ืฉื™ืขื•ืจ,

ื•ืœื”ื•ืกื™ืฃ ืฉื ื™ ืžืฉืชื ื™ ืกื‘ื™ื‘ื” ื‘ืขืช ื”ืจืฆืช ื”ืงื•ื ื˜ื™ื™ื ืจ:

docker run --rm -d -p 3000:3000 \
  -v ./public:/app/public \
  -v ./src:/app/src \
  -e CHOKIDAR_USEPOLLING=true \
  -e WATCHPACK_POLLING=true \
  react-app:dev

ืžื” ื–ื” ืขื•ืฉื”?

ืžืฉืชื ื™ ื”ืกื‘ื™ื‘ื”:

CHOKIDAR_USEPOLLING=true
WATCHPACK_POLLING=true

ืžืืœืฆื™ื ืืช ืžื ื’ื ื•ืŸ ื”ึพHot Reloading ืœืขื‘ื•ื“ ื‘ืฉื™ื˜ืช polling ื‘ืžืงื•ื ืœื”ืกืชืžืš ืขืœ file system events.


ืคืชืจื•ืŸ 2 โ€” ื”ื•ืกืคืช ืžืฉืชื ื™ ื”ืกื‘ื™ื‘ื” ื‘ืชื•ืš Dockerfile.dev

ื‘ืžืงื•ื ืœื”ืขื‘ื™ืจ ืžืฉืชื ื™ื ื‘ื›ืœ ื”ืจืฆื”, ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืื•ืชื ื™ืฉื™ืจื•ืช ื‘ืงื•ื‘ืฅ Dockerfile.dev.

FROM node:22-alpine AS build

WORKDIR /app

COPY package*.json .

# Temporarily adding --force to avoid underlying dependency conflicts
# due to latest versions of react-scripts.
RUN npm ci --force

ENV CHOKIDAR_USEPOLLING=true
ENV WATCHPACK_POLLING=true

COPY . .
CMD ["npm", "start"]

ื‘ืžืงืจื” ื–ื”, ืื™ืŸ ืฆื•ืจืš ืœื”ืขื‘ื™ืจ ืžืฉืชื ื™ ืกื‘ื™ื‘ื” ื‘ืคืงื•ื“ืช docker run.

ืฉื™ืžื• ืœื‘: ืงื•ื“ ื”ืžืื’ืจ ื”ืจืฉืžื™ ืฉืœ ื”ืงื•ืจืก ื›ื‘ืจ ืขื•ื“ื›ืŸ ื•ื›ื•ืœืœ ืืช ืžืฉืชื ื™ ื”ืกื‘ื™ื‘ื” ื‘ืืžืฆืขื•ืช ENV.


ื”ืขืจื” ื—ืฉื•ื‘ื” ืœื’ื‘ื™ Polling