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>
scripts/start — invyone 도커 기동 스크립트
플랫폼별 1-클릭 실행 스크립트. docker/dev/docker-compose.invyone.yml 을 기준으로 프론트엔드 + 백엔드-스프링 컨테이너를 자동 기동합니다.
파일 구성
| 파일 | 플랫폼 | 실행 방법 |
|---|---|---|
invyone-start-docker-all.bat |
Windows | 더블클릭 또는 cmd 에서 실행 |
invyone-start-docker-all.sh |
Linux | ./invyone-start-docker-all.sh |
invyone-start-docker-all.command |
macOS | Finder 더블클릭 (Terminal 자동 오픈) |
하는 일
dockerCLI 설치 여부 + daemon 실행 여부 체크docker compose -f docker/dev/docker-compose.invyone.yml up -d실행- 컨테이너 상태 + 접속 URL 안내 출력
접속 URL (기동 후)
| 대상 | URL |
|---|---|
| Frontend | http://localhost:9772 |
| Backend API | http://localhost:8083/api |
| 테넌트 (서브도메인) | http://<subdomain>.localhost:9772 — 예: http://test01.localhost:9772 |
서브도메인 멀티테넌시는 *.localhost RFC 6761 자동 매핑을 이용합니다 (Chrome / Firefox / Edge 기본 지원, hosts 편집 · DNS 설정 불필요).
리눅스/맥 첫 실행 전 — 실행 권한 1회
chmod +x scripts/start/invyone-start-docker-all.sh
chmod +x scripts/start/invyone-start-docker-all.command
Windows 에서 작성된 파일을 git 으로 받은 경우 executable bit 가 빠질 수 있습니다. 리포에 박아두려면:
git update-index --chmod=+x scripts/start/invyone-start-docker-all.sh
git update-index --chmod=+x scripts/start/invyone-start-docker-all.command
관련 명령 (참고용)
| 용도 | 명령 |
|---|---|
| 로그 실시간 | docker compose -f docker/dev/docker-compose.invyone.yml logs -f |
| 재시작 (볼륨 유지) | docker compose -f docker/dev/docker-compose.invyone.yml restart |
| 컨테이너 내리기 | docker compose -f docker/dev/docker-compose.invyone.yml down |
| 상태 확인 | docker ps |
트러블슈팅
docker daemon 이 실행 중이지 않습니다
Docker Desktop 실행 후 재시도.
포트 충돌 (9772 / 8083)
같은 머신에서 다른 프로젝트가 해당 포트를 점유했는지 확인 (docker ps · 태스크 매니저 · lsof -i :9772). 필요하면 docker-compose.invyone.yml 의 호스트 포트 매핑을 바꿔서 회피.
테넌트 서브도메인 접속 시 META DB 로 떨어지는 경우
현재 백엔드 SubdomainResolverFilter 와 프론트 subdomain.ts / client.ts 는 *.invyone.com 만 서브도메인으로 인식합니다. dev 환경에서 *.localhost 를 허용하는 패치는 별도 작업으로 예정 (TENANT_ALLOWED_SUFFIXES / NEXT_PUBLIC_TENANT_HOST_SUFFIXES 환경변수 기반).
프론트 routes-manifest.json ENOENT
frontend/next.config.mjs 의 output: "standalone" + experimental.webpackMemoryOptimizations: true 가 dev 모드에서 청크/매니페스트를 깨는 이슈. 이미 isDev 분기로 수정됨 (2026-04-07). 재발 시 해당 설정이 prod build 전용인지 확인.
전제 조건
- Docker Desktop (Windows/Mac) 또는 docker-ce + docker-compose-plugin (Linux)
- 프로젝트 루트에
docker/dev/docker-compose.invyone.yml존재 - 본인 로컬 머신에
.env등 필요 설정이 이미 놓여있어야 함 (syncthing 환경이면 자동 동기화)