Установка

Основной способ запуска — Docker Compose. Виртуальное окружение поддерживается через soniks.sh и нужно в основном для линтеров и тестов.

Требования

  • Docker и Docker Compose v2 (docker compose, не docker-compose).

  • Git.

  • Для сборки статики вне контейнера — Node.js и npm.

Внутри контейнера используется Python 3.12 — та же версия, что в CI. На неё же ориентированы пины в requirements.txt.

Запуск в Docker

git clone --recurse-submodules https://gitlab.com/space-education-development/soniks/network/soniks-network.git
cd soniks-network
cp env-dist .env
mkdir -p media && echo 'MEDIA_VOLUME_PATH=./media' >> .env
make build
make start

Портал поднимется на http://localhost:8000.

--recurse-submodules обязателен: декодеры телеметрии лежат в submodule soniks-decoders, без него образ не соберётся. В уже существующем клоне — git submodule update --init.

env-dist — шаблон с закомментированными переменными. Обязателен только SECRET_KEY: без него Django не стартует. С остальными значениями по умолчанию портал стартует, но без токенов часть функций будет недоступна (карты, загрузка TLE со Space-Track, отправка почты). Полный разбор — в Конфигурация.

Что поднимается

docker-compose.yml описывает шесть основных сервисов и три опциональных (профили registry и mqtt, см. CI/CD и деплой):

Сервис

Роль

db

PostgreSQL 15

redis

Redis — брокер и backend результатов Celery, кэш

web

Gunicorn с Django-приложением, порт 8000

celery

Воркер Celery

celery-beat

Планировщик периодических задач

docker-proxy

Доступ к Docker API только на чтение для страницы «Система»

registry, mosquitto, mqtt-bridge

Опциональные: registry-прокси для станций, MQTT-брокер и мост

web и celery запускают пакет, установленный в образ: правка исходников доходит до них только после make build. Из репозитория в них монтируется лишь .env — в /workdir/.env (настройки читаются через AutoConfig(search_path="/workdir")). Секреты в образ не копируются.

При старте web выполняет djangoctl.sh run, который перед запуском gunicorn делает collectstatic --clear, compress --force и migrate — миграции применяются автоматически.

Первичное наполнение

Начальные фикстуры (типы антенн, режимы и т. п.) загружаются отдельной командой:

docker compose run --rm web django-admin initialize

Суперпользователь создаётся обычным способом:

docker compose run --rm web django-admin createsuperuser

Полезные команды

make build     # docker compose build --pull
make start     # docker compose up --remove-orphans
make shell     # bash внутри контейнера web
make djshell   # django-admin shell внутри контейнера web
make clean     # docker system prune -a -f --volumes

Предупреждение

make clean вызывает docker system prune --volumes и удаляет тома, включая данные PostgreSQL. Это не «очистка кэша сборки».

Разработка без Docker

soniks.sh умеет вести virtualenv-сценарий и обслуживающие задачи:

./soniks.sh develop          # runserver в virtualenv
./soniks.sh develop_celery   # celery worker + beat
./soniks.sh tox [ARGS]       # запуск tox
./soniks.sh refresh          # перегенерировать requirements-файлы
./soniks.sh update           # обновить фронтенд-зависимости
./soniks.sh remove           # удалить virtualenv

Полный список — ./soniks.sh --help.

Дальше: Конфигурация — что положить в .env, Эксплуатация — как обслуживать запущенный портал.