로컬 개발 환경 통일을 위해 Vite 프로젝트를 Docker compose로 옮겼습니다. 그런데 코드 수정해도 HMR이 안 되고, 새로고침해야 반영됩니다.
docker-compose.yml:
services:
web:
build: .
ports: ["5173:5173"]
volumes: [".:/app", "/app/node_modules"]
command: npm run dev로컬 개발 환경 통일을 위해 Vite 프로젝트를 Docker compose로 옮겼습니다. 그런데 코드 수정해도 HMR이 안 되고, 새로고침해야 반영됩니다.
docker-compose.yml:
services:
web:
build: .
ports: ["5173:5173"]
volumes: [".:/app", "/app/node_modules"]
command: npm run dev
댓글 2
3가지 문제가 동시에 일어납니다. 하나씩 해결합시다.
1) Vite가 컨테이너 외부에서 접속 못 함
가장 흔한 누락 —
usePolling: true. macOS·Windows의 Docker Desktop은 호스트 파일시스템 이벤트를 컨테이너 안으로 정확히 전달 못 합니다. polling으로 강제하면 해결.2) node_modules anonymous volume이 빌드 결과물 막음
3) 폴링 cost — CPU 사용량 증가
polling은 100ms마다 디렉터리 스캔이라 CPU 5~10% 정도 먹습니다. 다음 옵션으로 줄여보세요:
Linux에서 Docker 돌리면 polling 안 써도 되니, OS별 분기:
대안 — Docker 안에서 dev 서버 안 돌림
요즘은 dev 서버는 호스트에서 돌리고 DB·캐시만 Docker compose로 두는 패턴이 더 흔해요. 속도·HMR 모두 빨라집니다.