diff --git a/docker/dev/docker-compose.windows.yml b/docker/dev/docker-compose.windows.yml new file mode 100644 index 00000000..9c6e61d7 --- /dev/null +++ b/docker/dev/docker-compose.windows.yml @@ -0,0 +1,16 @@ +# Windows + Docker Desktop 전용 override. +# +# 배경: Docker Desktop (Windows + WSL2) 의 bind mount 가 host inotify 이벤트를 +# 컨테이너로 전파하지 못해, Turbopack 의 file watcher 가 host 편집을 감지 못 함. +# webpack 은 WATCHPACK_POLLING=true 폴백을 지원하므로, Windows 에서만 +# Turbopack 을 끄고 webpack 으로 폴백 → 자동 HMR 복원. +# +# 적용 범위: scripts/start/invyone-start-docker-all.bat 에서 명시적으로 -f 추가. +# Mac/Linux 사용자가 쓰는 다른 진입점에는 영향 없음. +# +# Trade-off: 첫 컴파일 약간 느려짐 (~10-30%). 그러나 수정 → 화면 반영이 1~3초로 +# 단축되어 전체 개발 사이클은 압도적으로 빨라짐. + +services: + frontend: + command: ["npm", "run", "dev:docker:nopack"] diff --git a/frontend/package.json b/frontend/package.json index 8c09b0bd..ead03b6c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -8,6 +8,7 @@ "scripts": { "dev": "NODE_OPTIONS='--max-old-space-size=8192' next dev --turbopack -p 9771", "dev:docker": "next dev --turbopack -p 3000", + "dev:docker:nopack": "next dev -p 3000", "build": "next build", "build:no-lint": "DISABLE_ESLINT_PLUGIN=true next build", "start": "next start", diff --git a/scripts/start/invyone-start-docker-all.bat b/scripts/start/invyone-start-docker-all.bat index 6ae4eb85..ede6108a 100644 --- a/scripts/start/invyone-start-docker-all.bat +++ b/scripts/start/invyone-start-docker-all.bat @@ -5,6 +5,9 @@ chcp 65001 >nul pushd "%~dp0..\.." set COMPOSE_FILE=docker\dev\docker-compose.invyone.yml +REM Windows 전용 override — Turbopack 끄고 webpack 으로 폴백해서 host 편집 자동 HMR 복원. +REM (Docker Desktop on Windows 의 bind mount inotify 미전파 이슈 회피) +set COMPOSE_WIN=docker\dev\docker-compose.windows.yml where docker >nul 2>&1 if errorlevel 1 ( @@ -28,9 +31,15 @@ if not exist "%COMPOSE_FILE%" ( pause exit /b 1 ) +if not exist "%COMPOSE_WIN%" ( + echo [invyone] Windows override 파일을 찾을 수 없음: %COMPOSE_WIN% + popd + pause + exit /b 1 +) echo [invyone] 도커 컨테이너 기동 중... -docker compose -f %COMPOSE_FILE% up -d +docker compose -f %COMPOSE_FILE% -f %COMPOSE_WIN% up -d if errorlevel 1 ( echo [invyone] 기동 실패. 로그를 확인해주세요. popd @@ -40,7 +49,7 @@ if errorlevel 1 ( echo. echo [invyone] 컨테이너 상태: -docker compose -f %COMPOSE_FILE% ps +docker compose -f %COMPOSE_FILE% -f %COMPOSE_WIN% ps echo. echo [invyone] 접속 URL: