Skip to content

Развёртывание

Narmak ERP разворачивается через Docker Compose. Все сервисы упакованы в контейнеры и управляются единым файлом конфигурации.

Архитектура сервисов

Сервисы Docker Compose

  • web — основной backend-контейнер с Django / Gunicorn и приложением Narmak.
  • celery — worker для фоновых задач.
  • celery_beat — scheduler для периодических задач, включая CMMS automation.
  • redis — брокер Celery и слой кэширования.
  • gotenberg — сервис генерации PDF.
  • pgbouncer_remove — pgbouncer-прокси для удалённой PostgreSQL, если используется этот сценарий подключения.

Переменные окружения

Основные параметры задаются в settings.ini и .env:

База данных

ini
[database]
DB_NAME=narmak
DB_USER=narmak_user
DB_PASSWORD=secret
DB_HOST=postgres
DB_PORT=5432

Redis

ini
REDIS_URL=redis://redis:6379/0
CELERY_BROKER_URL=redis://redis:6379/1
CELERY_RESULT_BACKEND=redis://redis:6379/2

Внешние сервисы

env
PDF_INVOICE_SERVICE_URL=http://pdf-invoice-processor:8000
GOTENBERG_URL=http://gotenberg:3000
MATTERMOST_WEBHOOK_URL=https://mattermost.company.com/hooks/xxx
MATTERMOST_USERNAME=NarmakBot
MATTERMOST_CHANNEL=crm-leads
SELECTEL_STORAGE=...

Email (Yandex SMTP)

env
EMAIL_HOST=smtp.yandex.ru
EMAIL_PORT=465
EMAIL_USE_SSL=True
EMAIL_HOST_USER=noreply@narmak.ru
EMAIL_HOST_PASSWORD=secret

Запуск в разработке

bash
# Клонировать репозиторий
git clone git@github.com:narmak/backend.git
cd narmak_v2

# Скопировать конфиги
cp settings.ini.example settings.ini
cp .env.example .env

# Запустить инфраструктуру
docker-compose -f docker-compose-develop.yml up -d postgres redis

# Установить зависимости
poetry install

# Применить миграции
poetry run python manage.py migrate

# Загрузить начальные данные
poetry run python manage.py loaddata fixtures/initial_data.json

# Запустить сервер
poetry run python manage.py runserver 0.0.0.0:8018

# В отдельном терминале — Celery
poetry run celery -A narmak worker -l info

Запуск в production

bash
# Полный стек через Docker Compose
docker-compose -f docker-compose.yml up -d

# Применить миграции
docker-compose exec web python manage.py migrate

# Собрать статику
docker-compose exec web python manage.py collectstatic --noinput

# Проверить readiness ТОИР / CMMS
docker-compose exec web python manage.py check_plantmaintenance_readiness

Миграции

Проект имеет ~906 миграций. Основные правила:

bash
# Создать миграцию после изменения модели
poetry run python manage.py makemigrations app_name

# Применить все миграции
poetry run python manage.py migrate

# Откатить до конкретной миграции
poetry run python manage.py migrate app_name 0050_migration_name

# Показать статус миграций
poetry run python manage.py showmigrations

Кастомные миграции с описательными именами (например, add_business_trip_order_typedocpos.py) содержат data migrations.

Особенности rollout для ТОиР / CMMS

Для модуля ТОиР production rollout считается неполным, если поднят только Django без фонового контура:

  • применены миграции plantmaintenance;
  • активны celery worker и celery beat;
  • доступны requester endpoint'ы c-api/v1/repair-requests/;
  • доступны внутренние endpoint'ы analytics/dashboard/ и workorders/my-queue/;
  • пересобраны main-office и counterparty-office.

Подробный операционный чек-лист: ТОиР CMMS — release readiness и rollout.

Мониторинг

Celery Flower

Мониторинг задач Celery:

bash
poetry run celery -A narmak flower --port=5555
# Открыть: http://localhost:5555

Django Admin

text
http://localhost:8018/admin/

Swagger UI

text
http://localhost:8018/swagger/
http://localhost:8018/counterparty-swagger/

Резервное копирование

bash
# Бэкап базы данных
docker-compose exec postgres pg_dump -U narmak_user narmak > backup_$(date +%Y%m%d).sql

# Восстановление
cat backup_20250101.sql | docker-compose exec -T postgres psql -U narmak_user narmak

См. также