Перенос в master всего, кроме админки: ТОП-группы, порядок групп, запуск без Docker
Админка осталась отдельной ветвью admin-panel; в master её нет (ни кода, ни страниц, ни переменных окружения, ни тома настроек). Что перенесено: - parsing: имена групп вида «ИВТ-ТОП-11БО» распознаются, порядок групп = порядок столбцов таблицы (похожие заголовки с пробелами группой не считаются); - main: GET /groups отдаёт группы в порядке столбцов; интервал обновления из SCHEDULE_INTERVAL_MINUTES (со старым SCHEDULE_CACHE_TTL как fallback); - cache: по интервалу сверяем modified — если файл не менялся, не скачиваем; при загрузке считаем sha256 и пишем в лог и /status, изменился ли файл; - source: запросы к Яндекс.Диску с no-cache и меткой времени; - frontend: ответы API с Cache-Control: no-store, общий .env из корня проекта (и backend, и frontend), страницы/прокси админки нет; - Dockerfile/compose/.env.example: без ADMIN_* и без тома настроек; в api-образ попадают все модули backend (проверяется тестом test_deploy); - Makefile: make help/venv/run/run-api/run-front/test + docker-цели — «make run» поднимает всё локально без Docker; - README: быстрый старт, полный список зависимостей, запуск локально и в Docker; - deploy/: пример nginx и инструкция «второй стенд рядом с основным». Тесты: 114 (удалены админские), все зелёные.
This commit is contained in:
61
deploy/README-dev.md
Normal file
61
deploy/README-dev.md
Normal file
@@ -0,0 +1,61 @@
|
||||
# Второй стенд рядом с основным
|
||||
|
||||
Как поднять ещё один экземпляр проекта (например, для проверки правок в таблице
|
||||
на отдельном домене): свой каталог, свои порты, своя ссылка на таблицу.
|
||||
Основной стенд при этом не трогаем.
|
||||
|
||||
## 1. Код
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /opt/schedule-dev && sudo chown "$USER" /opt/schedule-dev
|
||||
git clone <адрес репозитория> /opt/schedule-dev
|
||||
```
|
||||
|
||||
## 2. .env
|
||||
|
||||
Скопировать `.env.example` в `/opt/schedule-dev/.env` и заполнить:
|
||||
|
||||
```ini
|
||||
SCHEDULE_LINK=https://disk.yandex.ru/i/...
|
||||
SCHEDULE_INTERVAL_MINUTES=15
|
||||
SCHEDULE_RETRY_AFTER=60
|
||||
API_PORT=127.0.0.1:8001
|
||||
FRONTEND_PORT=127.0.0.1:8091
|
||||
```
|
||||
|
||||
Порты 8001/8091 выбраны, чтобы не пересечься с основным стендом (8000/8090).
|
||||
Привязка к `127.0.0.1` — чтобы API и фронт не смотрели в интернет напрямую,
|
||||
наружу их отдаёт nginx.
|
||||
|
||||
## 3. Запуск
|
||||
|
||||
```bash
|
||||
cd /opt/schedule-dev
|
||||
sudo docker compose up -d --build
|
||||
sudo docker compose ps
|
||||
```
|
||||
|
||||
## 4. nginx и сертификат
|
||||
|
||||
В `deploy/nginx-dev.conf` порт `proxy_pass` должен совпадать с
|
||||
`FRONTEND_PORT` из `.env` (по умолчанию 8091).
|
||||
|
||||
```bash
|
||||
sudo cp deploy/nginx-dev.conf /etc/nginx/sites-available/dev.schedule.our-place.ru
|
||||
sudo ln -sf /etc/nginx/sites-available/dev.schedule.our-place.ru /etc/nginx/sites-enabled/
|
||||
sudo nginx -t && sudo systemctl reload nginx
|
||||
sudo certbot --nginx -d dev.schedule.our-place.ru
|
||||
```
|
||||
|
||||
## 5. Проверка
|
||||
|
||||
```bash
|
||||
curl -s http://127.0.0.1:8091/healthz # {"ok":true}
|
||||
curl -sI https://dev.schedule.our-place.ru/ | head -3 # 200
|
||||
```
|
||||
|
||||
## Обновление
|
||||
|
||||
```bash
|
||||
cd /opt/schedule-dev && git pull && sudo docker compose up -d --build
|
||||
```
|
||||
Reference in New Issue
Block a user