/nestjs-boilerplate

NestJS boilerplate

Primary LanguageTypeScript

NestJS boilerplate

Базовая сборка под сервис на NestJS. Расчитана под развертывание на сервере вместе с Traefik

Включает в себя:

  • MongoDB
  • Seeder модуль для массового апдейта базы данных и ее очистки
  • Оптимизированный Dockerfile с кешированием слоев
  • docker-compose с Traefik конфигурацией и проверкой статуса контейнера по health-check запросу
  • Throttle защита
  • Swagger модуль
  • Настроена папка static для раздачи статичного контента
  • health-check модуль с контроллером для проверки скорости загрузки файлов с сервера
  • DigitalFingerpring middleware

Docker

Добавить сеть:

service-network - имя сети

docker network create service-network

Доступ к локальной базе из контейнера:

host.docker.internal - домен для обращения из контейнера к локальной машине, на которой запущен контейнер. Используется в DB_CONNECTION_STRING. Если база располагается внутри докер-контейнера, то указываем хост контейнера.

Database

Настройка MongoDB:

Убедитесь, что ваш MongoDB сервер прослушивает не только localhost, но и другие интерфейсы. Для этого отредактируйте файл конфигурации MongoDB (обычно mongod.conf) и установите параметр bindIp на 0.0.0.0 (но будьте осторожны с вопросами безопасности).

Config

В папке config лежат файлы конфигурации env.development.ts и env.production.ts. Они выбираются автоматически в зависимости от выбранного стейджа. При разработке можно переопределить любую переменную из конфига в файле src/config/index.ts.

Env variables

NODE_ENV: варианты окружения production или development

PORT: Порт на котором будет запущено приложение

DB_CONNECTION_STRING: строка подключения к базе данных

ALLOWED_DOMAINS: разрешенные домены в формате 'example1.com;example2.com'

THROTTLE_TTL: количество миллисекунд, в течение которых каждый запрос будет храниться в хранилище

THROTTLE_LIMIT: максимальное количество запросов в пределах лимита TTL

VERSION: текущая версия приложения

Запуск

Локальный запуск development сборки

Убедитесь что MongoDB и указанная в DB_CONNECTION_STRING таблица доступны

npm run start:dev

Локальный запуск production сборки

Убедитесь что MongoDB и указанная в DB_CONNECTION_STRING таблица доступны

npm run build
...
npm run start:prod

Запуск production контейнера

Предварительно настройте Traefik конфигурацию в файле docker-compose.yml

docker compose up -d