이전 글에서 나의 프로젝트를 이미지로 빌드하고 컨테이너로 실행하는 부분까지 적용시켰다.
이번에는 전에 성공하지 못했던 Hot reload를 적용시킨 방법을 작성하려 한다.
docker로 로컬 개발 환경을 만들었지만, 코드가 수정될 때 마다 docker-compose를 down, up 해야하는 굉장히 불편한 상황이 발생했다.
그래서 코드가 바뀌는걸 감지하고 자동으로 재실행해주는 hot reload를 적용시키고 싶었다.
그러기 위해 본인은 Dockerfile과 docker-compose.yaml 파일에 대해서만 계속 찾아보고 수정하고를 반복했었는데, 정답은 이 곳이 아니었다.
물론, 여기서도 해줘야 하는 부분이 있는데 추가적으로 tsconfig.json에도 추가할 코드가 있던것이다.
이전 글에서 Dockerfile과 docker-compose.yaml의 코드를 어떻게 작성했는지 기재해두었다.
이번엔 tsconfig.json에 compilerOptions 아래에 코드를 추가해보자.
"watchOptions": {
// Use native file system events for files and directories
"watchFile": "priorityPollingInterval",
"watchDirectory": "dynamicprioritypolling",
// Poll files for updates more frequently
// when they're updated a lot.
"fallbackPolling": "dynamicPriority",
// Don't coalesce watch notification
"synchronousWatchDirectory": true,
// Finally, two additional settings for reducing the amount of possible
// files to track work from these directories
"excludeDirectories": ["**/node_modules", "dist"]
}
코드의 변경을 주기적으로 검사하여 감지하고, 감지가 되면 재시작하도록 하는 옵션이다.
yaml 파일에 넣었던 CHOKIDAR_USEPOLLING=true에 이어서(이는 윈도우만 해당한다)
위 코드까지 추가해주면 정상적으로 hot reload가 된다.