Запуск курса: JupyterLab и VS Code в браузере #5

Merged
ddmitry merged 5 commits from t3/browser-vscode-setup into main 2026-10-21 12:22:47 +03:00
Owner

Summary

Курс запускается одной командой Compose и ведёт студента через JupyterLab до первого вычисления, а затем по восьми модулям. VS Code в браузере доступен в том же стенде по желанию. Python, venv и расширения на хосте устанавливать не нужно.

docker compose build / up -d
├── JupyterLab :8888 — основной маршрут
└── VS Code    :8889 — альтернативный интерфейс
          ↓ отдельные ядра, общие файлы ноутбуков
      Spark → Iceberg / MinIO ← Trino
  • Добавлен ide с закреплёнными версиями code-server, Python/Jupyter extensions и готовой рабочей областью. Ноутбуки сохраняются на хосте; документация и src/ доступны для чтения. Порты обоих интерфейсов опубликованы на loopback; удалённый доступ описан через SSH-туннель. Сборка связана в порядке spark-master → jupyter → ide.
  • JupyterLab остаётся основным интерфейсом. README, START_HERE, программа, PRD, памятка, технический справочник и первый ноутбук согласованы с этим маршрутом. Для VS Code приведены выбор ядра, сохранение и ограничения совместимости браузера и средств защиты. Дополнительных профилей запуска нет.
  • MinIO скачивается готовым: coollabsio/minio:RELEASE.2025-04-22T22-12-26Z, digest индекса AMD64/ARM64 закреплён. Один образ с mc используется сервером и init-контейнером; ошибки создания бакета больше не скрываются. Основной registry — GHCR, резерв того же digest — Docker Hub через MINIO_REGISTRY=docker.io. Источники зависимостей и диагностика сети описаны отдельно.
  • Trino ограничен 2 ГиБ RAM без swap, heap — 1 ГиБ. Требования разделяют ресурсы компьютера, Docker и диск: ориентир 16 ГБ RAM компьютера, 4 CPU, 8 ГБ для Docker и 20 ГБ свободного места. Памятка объясняет продолжение занятий, сохранение состояния и осознанный сброс данных.
  • Добавлен tests/browser_ide.sh: открытие ноутбука, выбор ядра, вычисление, вывод, сохранение и повторное открытие. Учебный код и learning outcomes сохранены.

Evidence

  • Before: сборка пыталась скачать локальный de-spark-iceberg:3.5.1 и завершалась pull access denied; закреплённый MinIO из Quay возвращал 401 UNAUTHORIZED.
    After: окружение собрано через зависимости Compose. MinIO скачан из GHCR и резервного Docker Hub с одним digest. На отдельном стенде с пустыми volumes прошли инициализация, повторный minio-init и Spark → Iceberg → Trino smoke (1 / from_spark).
  • JupyterLab, Chromium, 21 октября: открыта временная копия Модуля 1, через меню выбрано Python 3 (ipykernel), выполнены все 5 кодовых ячеек без ошибок. result_sum=499999500000 отобразился в браузере, сохранился и остался после повторного открытия. Тестовое ядро и копия удалены, пользовательское ядро сохранено.
  • VS Code, Chromium: браузерный smoke прошёл все 5 кодовых ячеек, webview, сохранение и повторное открытие. На пользовательском Windows/Edge с Kaspersky выявлена блокировка notebook webview дополнительной политикой безопасности; сам редактор при этом открывался. В документации указан переход к JupyterLab без обязательной настройки защиты.
  • Trino: на трёх месяцах Taxi прошли запросы Модуля 6 и дополнительные JOIN; результаты сверены со Spark. Bronze — 9 554 778 строк, silver — 9 418 184, справочник — 265 зон. Пик Trino по cgroup — около 1,25 ГиБ, OOM и перезапусков нет. Методика и границы замера — plans/trino-memory-validation.md.
  • После замены MinIO на основном стенде прежняя Iceberg-таблица читалась через Trino; перед заменой сохранены архив volume и дамп PostgreSQL.
  • Прошли docker compose config --quiet, проверка локальных ссылок и якорей, синтаксис shell-блоков и git diff --check. В текущей правке проверены 78 ссылок/якорей и 26 shell-блоков; кодовые ячейки, выводы и метаданные исходного ноутбука не изменены.

Проверки выполнялись на Linux x86_64 с Docker Engine. Docker Desktop, ARM64, полный последовательный проход восьми модулей и общий жёсткий лимит памяти Docker 8 ГБ не проверялись. Браузерный smoke использует Linux host networking. Доступность всех источников из сетей российских провайдеров не проверялась. Результат Run All не заменяет самостоятельное задание с TODO.

Merge Danger

Door: two-way для конфигурации; откат MinIO с существующими данными требует учитывать состояние volume и backup.

Blast Radius: стенд.

Меняются сборка, поставщик и версия MinIO, бюджет Trino и маршрут документации. MinIO — историческая сторонняя сборка для учебного стенда. Лимит Trino проверен на данных курса; более тяжёлые запросы могут потребовать другого бюджета. Интерфейсы без пароля рассчитаны на одного пользователя и доступны через loopback или SSH-туннель.

## Summary Курс запускается одной командой Compose и ведёт студента через JupyterLab до первого вычисления, а затем по восьми модулям. VS Code в браузере доступен в том же стенде по желанию. Python, venv и расширения на хосте устанавливать не нужно. ```text docker compose build / up -d ├── JupyterLab :8888 — основной маршрут └── VS Code :8889 — альтернативный интерфейс ↓ отдельные ядра, общие файлы ноутбуков Spark → Iceberg / MinIO ← Trino ``` - Добавлен `ide` с закреплёнными версиями code-server, Python/Jupyter extensions и готовой рабочей областью. Ноутбуки сохраняются на хосте; документация и `src/` доступны для чтения. Порты обоих интерфейсов опубликованы на loopback; удалённый доступ описан через SSH-туннель. Сборка связана в порядке `spark-master → jupyter → ide`. - JupyterLab остаётся основным интерфейсом. README, START_HERE, программа, PRD, памятка, технический справочник и первый ноутбук согласованы с этим маршрутом. Для VS Code приведены выбор ядра, сохранение и ограничения совместимости браузера и средств защиты. Дополнительных профилей запуска нет. - MinIO скачивается готовым: `coollabsio/minio:RELEASE.2025-04-22T22-12-26Z`, digest индекса AMD64/ARM64 закреплён. Один образ с `mc` используется сервером и init-контейнером; ошибки создания бакета больше не скрываются. Основной registry — GHCR, резерв того же digest — Docker Hub через `MINIO_REGISTRY=docker.io`. Источники зависимостей и диагностика сети описаны отдельно. - Trino ограничен 2 ГиБ RAM без swap, heap — 1 ГиБ. Требования разделяют ресурсы компьютера, Docker и диск: ориентир 16 ГБ RAM компьютера, 4 CPU, 8 ГБ для Docker и 20 ГБ свободного места. Памятка объясняет продолжение занятий, сохранение состояния и осознанный сброс данных. - Добавлен `tests/browser_ide.sh`: открытие ноутбука, выбор ядра, вычисление, вывод, сохранение и повторное открытие. Учебный код и learning outcomes сохранены. ## Evidence - **Before:** сборка пыталась скачать локальный `de-spark-iceberg:3.5.1` и завершалась `pull access denied`; закреплённый MinIO из Quay возвращал `401 UNAUTHORIZED`. **After:** окружение собрано через зависимости Compose. MinIO скачан из GHCR и резервного Docker Hub с одним digest. На отдельном стенде с пустыми volumes прошли инициализация, повторный `minio-init` и Spark → Iceberg → Trino smoke (`1 / from_spark`). - **JupyterLab, Chromium, 21 октября:** открыта временная копия Модуля 1, через меню выбрано `Python 3 (ipykernel)`, выполнены все 5 кодовых ячеек без ошибок. `result_sum=499999500000` отобразился в браузере, сохранился и остался после повторного открытия. Тестовое ядро и копия удалены, пользовательское ядро сохранено. - **VS Code, Chromium:** браузерный smoke прошёл все 5 кодовых ячеек, webview, сохранение и повторное открытие. На пользовательском Windows/Edge с Kaspersky выявлена блокировка notebook webview дополнительной политикой безопасности; сам редактор при этом открывался. В документации указан переход к JupyterLab без обязательной настройки защиты. - **Trino:** на трёх месяцах Taxi прошли запросы Модуля 6 и дополнительные JOIN; результаты сверены со Spark. Bronze — 9 554 778 строк, silver — 9 418 184, справочник — 265 зон. Пик Trino по cgroup — около 1,25 ГиБ, OOM и перезапусков нет. Методика и границы замера — `plans/trino-memory-validation.md`. - После замены MinIO на основном стенде прежняя Iceberg-таблица читалась через Trino; перед заменой сохранены архив volume и дамп PostgreSQL. - Прошли `docker compose config --quiet`, проверка локальных ссылок и якорей, синтаксис shell-блоков и `git diff --check`. В текущей правке проверены 78 ссылок/якорей и 26 shell-блоков; кодовые ячейки, выводы и метаданные исходного ноутбука не изменены. Проверки выполнялись на Linux x86_64 с Docker Engine. Docker Desktop, ARM64, полный последовательный проход восьми модулей и общий жёсткий лимит памяти Docker 8 ГБ не проверялись. Браузерный smoke использует Linux host networking. Доступность всех источников из сетей российских провайдеров не проверялась. Результат `Run All` не заменяет самостоятельное задание с `TODO`. ## Merge Danger **Door:** two-way для конфигурации; откат MinIO с существующими данными требует учитывать состояние volume и backup. **Blast Radius:** стенд. Меняются сборка, поставщик и версия MinIO, бюджет Trino и маршрут документации. MinIO — историческая сторонняя сборка для учебного стенда. Лимит Trino проверен на данных курса; более тяжёлые запросы могут потребовать другого бюджета. Интерфейсы без пароля рассчитаны на одного пользователя и доступны через loopback или SSH-туннель.
ddmitry added 1 commit 2026-10-18 23:40:10 +03:00
ddmitry added 1 commit 2026-10-19 10:26:23 +03:00
ddmitry changed title from VS Code в браузере: готовое окружение для ноутбуков курса to VS Code в браузере и запуск курса с готовым MinIO 2026-10-19 10:27:06 +03:00
ddmitry added 1 commit 2026-10-19 10:48:38 +03:00
ddmitry changed title from VS Code в браузере и запуск курса с готовым MinIO to VS Code в браузере и маршрут прохождения курса 2026-10-19 10:49:06 +03:00
ddmitry added 1 commit 2026-10-19 11:48:11 +03:00
ddmitry added 1 commit 2026-10-21 11:24:03 +03:00
ddmitry changed title from VS Code в браузере и маршрут прохождения курса to Запуск курса: JupyterLab и VS Code в браузере 2026-10-21 11:24:31 +03:00
ddmitry merged commit 0bdce356e3 into main 2026-10-21 12:22:47 +03:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ddmitry/mini-lakehouse-lab#5