Установка¶
Основной способ запуска — 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 и деплой):
Сервис |
Роль |
|---|---|
|
PostgreSQL 15 |
|
Redis — брокер и backend результатов Celery, кэш |
|
Gunicorn с Django-приложением, порт |
|
Воркер Celery |
|
Планировщик периодических задач |
|
Доступ к Docker API только на чтение для страницы «Система» |
|
Опциональные: 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, Эксплуатация — как
обслуживать запущенный портал.