Как сделать хот релоад Docker + Nest Js?

Хот релоад, или горячая перезагрузка, представляет собой механизм, который позволяет автоматически перезагружать приложение при каждом изменении исходного кода, без необходимости ручной перезагрузки сервера или контейнера Docker. Это полезно во время разработки, когда мы часто вносим изменения в код и хотим видеть их результаты немедленно.

Для настройки хот релоада в Docker с Nest.js, вам понадобятся несколько шагов.

1. Создайте Dockerfile:

FROM node:12

WORKDIR /app

COPY package.json .
COPY yarn.lock .

RUN yarn

COPY . .

CMD ["yarn", "start:dev"]

2. Создайте docker-compose.yml файл:

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/app
    ports:
      - 3000:3000

3. Устанавливаем необходимые пакеты в приложении:

yarn add --dev ts-node-dev

4. Редактируем package.json:

"scripts": {
  "start:dev": "ts-node-dev --respawn --transpile-only src/main.ts"
}

Теперь, когда вы запускаете приложение с использованием docker-compose up, Docker будет мониторить изменения в вашем коде и автоматически перезагружать приложение при их обнаружении.

Важно отметить, что при использовании хот релоада в Docker некоторые файлы, такие как node_modules, могут быть исключены из наблюдаемых, чтобы ускорить процесс перезагрузки. Это можно сделать путем добавления соответствующего объявления в .dockerignore файл.

Таким образом, вы настроили хот релоад в Docker с использованием Nest.js. Теперь вы можете вносить изменения в свой код и видеть результаты немедленно, без необходимости ручной перезагрузки сервера или контейнера.