Запуск практики
Практика работает целиком на вашей машине: браузер, Postgres и проверки — всё локально, интернет после скачивания образа не нужен.
Что нужно
Docker с docker compose. Больше ничего: Python, Node и клиент Postgres ставить не надо.
docker compose up
Открыть localhost:8766. Первый запуск дольше — образ собирается и накатывается схема базы.

Две базы, и это важно
| База | Что в ней | Кто её меняет |
|---|---|---|
| живая | ваши эксперименты: любые SELECT, INSERT, CREATE, загруженные примеры данных | вы, кнопкой «Выполнить» |
| проверочная | чистая копия схемы, куда наливаются варианты данных задания | только проверка, автоматически |
Поэтому сломать себе проверку экспериментами невозможно: «Проверить решение» не смотрит на живую базу вообще. И наоборот — то, что запрос «отработал» в живой базе с одним набором строк, ещё не значит, что задание решено.
Кнопка «Сбросить базу» возвращает живую базу к пустой схеме. Решения при этом не трогаются.
Папка solutions/
Рядом с docker-compose.yml создаётся папка solutions/ — по файлу на задание:
solutions/
t01_active_shops_with_seats.sql
t02_espresso_available.sql
.status.json что и когда проходило проверку
.history/ история запросов и закладки, в git не попадает
Это и есть ваша сдача: коммитьте solutions/ в свой репозиторий. Раннер сам дописывает .history/ в solutions/.gitignore, чтобы черновики не попали в коммит. Как проверяет преподаватель
Обновление практики
Практику раздаёт преподаватель — папкой пака, смонтированной в контейнер как /pack. Когда пак меняется, достаточно перезапустить раннер:
docker compose up -d --force-recreate runner
Данные живой базы переживают перезапуск: они лежат в томе pgdata. Ваши решения тоже — они на диске рядом, а не в контейнере.
Если преподаватель положил в пак тему, приложение возьмёт из неё цвета, шрифты, логотип и название курса. Светлую или тёмную схему выбираете вы кнопкой в списке заданий — если тема не зафиксировала одну из них. Посмотреть оформление по умолчанию: localhost:8766/?theme=off.