Установка Apache Superset в Docker (Windows + WSL2): пошагово, с разбором типичных ошибок

TL;DR: ставим WSL2 и Docker Desktop, клонируем Superset, генерируем SECRET_KEY, поднимаем стек через docker compose и не наступаем на грабли с down -v, неприменяемым конфигом и занятым портом 8088.

Apache Superset — открытая BI-платформа от Apache: дашборды, SQL Lab, десятки коннекторов к базам. Если вы под Windows и не хотите портить систему пачкой зависимостей Python — самый спокойный путь это WSL2 + Docker. Ниже — рабочий рецепт от первого включения виртуализации до открытого в браузере логина, плюс ошибки, на которые я наткнулся сам.

1. Подготовка

Проверка виртуализации

Откройте Диспетчер задач → Производительность → ЦП. Параметр «Виртуализация» должен быть «Включено». Если выключен — перезагрузитесь, зайдите в BIOS (обычно Del или F2 при старте) и включите Intel VT-x / AMD SVM в разделе Advanced CPU Configuration.

Затем нажмите Win + R, введите optionalfeatures и убедитесь, что включены три компонента:

  • Hyper-V;

  • Подсистема Windows для Linux;

  • Платформа виртуальной машины.

Установка WSL

В PowerShell от администратора:

wsl --install -d Ubuntu

Если WSL уже установлен:

wsl --update

После перезагрузки Ubuntu попросит задать имя пользователя и пароль — это локальная учётка для sudo. Если автоматически в неё не перешло — закройте окно Ubuntu и откройте заново.

Установка Docker Desktop

Скачайте установщик с официального сайта . При установке отметьте Use WSL 2 based engine. После установки зайдите в Settings → Resources → WSL Integration и включите интеграцию для вашей Ubuntu.

Проверка:

docker --versiondocker compose version

2. Установка Superset в Ubuntu

Создайте папку в \wsl.localhostUbuntuhome — у меня она называется nrk_data_stack (путь удобно открывать прямо из Проводника Windows).

Открываем терминал Ubuntu:

sudo apt update && sudo apt upgrade -ycd ~/nrk_data_stackgit clone https://github.com/apache/superset.gitcd superset

Совет: зафиксируйтесь на конкретной версии, чтобы статья и репозиторий не разъехались со временем. Я ставил релиз 6.1.0:

В Ubuntu

git checkout tags/6.1.0

3. Создание и настройка файлов

Оба файла конфигурации лежат (и создаются) в клонированном репозитории.

Файл .env — переменные окружения, откуда приложение берёт секреты и настройки. Он находится тут: \wsl.localhostUbuntuhomenrk_data_stacksupersetdocker

Файл superset_config_docker.py — Python-конфиг, который монтируется внутрь контейнера и задаёт поведение приложения. Создаётся тут: ...supersetdockerpythonpath_dev

Генерируем в Ubuntu секретный ключ:

openssl rand -base64 42

Добавляем в конец файла .env:

SUPERSET_SECRET_KEY=SCARF_ANALYTICS=false

Той же командой можно сгенерировать ключ для GLOBAL_ASYNC_QUERIES_JWT_SECRET — он нужен для подписи JWT-токенов асинхронных запросов. Если эту функцию не используете — ключ не генерировать и соответствующие параметры в superset_config_docker.py добавлять не нужно.

Итоговый рабочий superset_config_docker.py я выложил здесь: https://github.com/NorkaOleg/nrk_data_stack/tree/main/Superset

После изменений перезапускаем стек:

docker compose -f docker/docker-compose-non-dev.yml up -d

Первый запуск занимает 5–10 минут: скачиваются образы, применяются миграции, создаётся админ по умолчанию (admin/admin).

4. Типичные ошибки и решения

«Refusing to start due to insecure SECRET_KEY» — ключ не задан или остался дефолтным. Сгенерируйте openssl rand -base64 42 и пропишите его и в .env (SUPERSET_SECRET_KEY), и в superset_config_docker.py (SECRET_KEY). Если ключ менялся уже после первого запуска — добавьте в конфиг строку PREVIOUS_SECRET_KEY = 'старый_ключ', иначе зашифрованные ранее данные не расшифруются.

Изменения в конфиге не применяются — файлы из docker/ подхватываются при старте контейнера, а не на лету. Нужен down + up. Если правили образ (например, добавляли драйвер БД в requirements-local.txt) — нужен rebuild:

docker compose -f docker/docker-compose-non-dev.yml build --no-cache superset_app

Порт 8088 занят — либо остановите процесс, либо смените порт в .env (SUPERSET_PORT / маппинг в docker-compose).

docker compose down -v удалил все данные — флаг -v сносит тома, включая метастазу Superset и ваши дашборды. Если данные нужны — просто down без -v.

Конфиг «не виден» — проверьте, что файл лежит именно в docker/superset_config_docker.py и имя не содержит опечаток: контейнер монтирует его в /app/superset_config_docker.py.

Полезная привычка при разборе проблем — смотреть логи инициализации:

docker logs superset_init

Не стесняйтесь просить помощи у нейроассистентов: я скидывал Алисе (AI-помощник Яндекса) свои логи и скриншоты — и в итоге пришли к решению, Superset запустился. Часто свежий взгляд на стектрейс экономит час гугления.

5. Проверка работы

Смотрим статус сервисов:

docker compose -f docker/docker-compose-non-dev.yml ps

Все сервисы (superset_app, postgres, redis) должны быть в состоянии Up. Если что-то не так — логи приложения:

docker compose -f docker/docker-compose-non-dev.yml logs superset_app | tail -30

Открываем в браузере http://localhost:8088, логин admin, пароль admin (в non-dev сборке создаётся автоматически — смените его в настройках профиля). Если вместо страницы «connection refused» — просто ждём ещё пару минут: миграции при первом старте идут до 10 минут.

После перезагрузки ПК

Docker Desktop должен стартовать сам (проверьте автозапуск в настройках), а дальше:

bashcd ~/nrk_data_stack/supersetdocker compose -f docker/docker-compose-non-dev.yml up -d

Остановка всех контейнеров:

docker compose -f docker/docker-compose-non-dev.yml down

Проверяем localhost:8088Проверяем localhost:8088Проверяем Docker DesctopПроверяем Docker Desctop

Ссылка на ВК видео с установкой Superset https://vkvideo.ru/video-242717920_456239017

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев