nestjs + docker + Hot reload

Uhan33·2024년 4월 1일
1

TIL

목록 보기
55/72

이전 글에서 나의 프로젝트를 이미지로 빌드하고 컨테이너로 실행하는 부분까지 적용시켰다.
이번에는 전에 성공하지 못했던 Hot reload를 적용시킨 방법을 작성하려 한다.

Hot Reload

docker로 로컬 개발 환경을 만들었지만, 코드가 수정될 때 마다 docker-compose를 down, up 해야하는 굉장히 불편한 상황이 발생했다.
그래서 코드가 바뀌는걸 감지하고 자동으로 재실행해주는 hot reload를 적용시키고 싶었다.

그러기 위해 본인은 Dockerfile과 docker-compose.yaml 파일에 대해서만 계속 찾아보고 수정하고를 반복했었는데, 정답은 이 곳이 아니었다.
물론, 여기서도 해줘야 하는 부분이 있는데 추가적으로 tsconfig.json에도 추가할 코드가 있던것이다.

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가 된다.

0개의 댓글