chore(dev): Windows Docker Desktop 자동 HMR 복원

Docker Desktop on Windows 의 bind mount 가 host inotify 이벤트를
컨테이너로 전파하지 못해 Turbopack file watcher 가 host 편집을 감지 못 함.
webpack 은 WATCHPACK_POLLING=true 폴백을 지원하므로 Windows 에서만
Turbopack 을 끄고 webpack 으로 폴백 → 자동 HMR 복원.

- frontend/package.json: dev:docker:nopack 스크립트 추가 (next dev, no turbopack)
- docker/dev/docker-compose.windows.yml: Windows 전용 frontend command override
- scripts/start/invyone-start-docker-all.bat: windows.yml 자동 merge

Mac/Linux 진입점은 영향 없음 (start.bat 만 windows override 활성).
첫 컴파일은 약간 느려지지만 (~10-30%) 수정→반영 시간이 80s → 1~3s 로 단축.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-08 08:34:46 +09:00
parent 0e895a90fa
commit d2b77d348b
3 changed files with 28 additions and 2 deletions
+16
View File
@@ -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"]
+1
View File
@@ -8,6 +8,7 @@
"scripts": { "scripts": {
"dev": "NODE_OPTIONS='--max-old-space-size=8192' next dev --turbopack -p 9771", "dev": "NODE_OPTIONS='--max-old-space-size=8192' next dev --turbopack -p 9771",
"dev:docker": "next dev --turbopack -p 3000", "dev:docker": "next dev --turbopack -p 3000",
"dev:docker:nopack": "next dev -p 3000",
"build": "next build", "build": "next build",
"build:no-lint": "DISABLE_ESLINT_PLUGIN=true next build", "build:no-lint": "DISABLE_ESLINT_PLUGIN=true next build",
"start": "next start", "start": "next start",
+11 -2
View File
@@ -5,6 +5,9 @@ chcp 65001 >nul
pushd "%~dp0..\.." pushd "%~dp0..\.."
set COMPOSE_FILE=docker\dev\docker-compose.invyone.yml 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 where docker >nul 2>&1
if errorlevel 1 ( if errorlevel 1 (
@@ -28,9 +31,15 @@ if not exist "%COMPOSE_FILE%" (
pause pause
exit /b 1 exit /b 1
) )
if not exist "%COMPOSE_WIN%" (
echo [invyone] Windows override 파일을 찾을 수 없음: %COMPOSE_WIN%
popd
pause
exit /b 1
)
echo [invyone] 도커 컨테이너 기동 중... echo [invyone] 도커 컨테이너 기동 중...
docker compose -f %COMPOSE_FILE% up -d docker compose -f %COMPOSE_FILE% -f %COMPOSE_WIN% up -d
if errorlevel 1 ( if errorlevel 1 (
echo [invyone] 기동 실패. 로그를 확인해주세요. echo [invyone] 기동 실패. 로그를 확인해주세요.
popd popd
@@ -40,7 +49,7 @@ if errorlevel 1 (
echo. echo.
echo [invyone] 컨테이너 상태: echo [invyone] 컨테이너 상태:
docker compose -f %COMPOSE_FILE% ps docker compose -f %COMPOSE_FILE% -f %COMPOSE_WIN% ps
echo. echo.
echo [invyone] 접속 URL: echo [invyone] 접속 URL: