Развёртывание
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=5432Redis
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:5555Django 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