Установка драйверов в образах Docker
Вот переработанный вариант инструкции, адаптированный под Fincomtech Analytics.
Установка драйверов баз данных в Docker-образах Fincomtech Analytics
Для корректной работы Fincomtech Analytics с внешними источниками данных необходимо установить соответствующий Python-драйвер для каждого типа базы данных, к которой планируется подключение.
В данном руководстве мы рассмотрим процесс на примере установки коннектора для MySQL. Процедура аналогична для любых других библиотек подключения.
1. Выбор необходимого драйвера
Определите, какой пакет PyPI требуется для вашей базы данных. Поскольку Fincomtech Analytics базируется на SQLAlchemy, вы можете сверяться со стандартным списком драйверов.
В этом примере мы используем библиотеку mysqlclient для подключения к MySQL.
2. Интеграция драйвера в контейнер
Библиотеку mysqlclient необходимо установить непосредственно в Docker-контейнер Fincomtech Analytics (наличие драйвера на хост-машине не влияет на работу приложения).
Важно: Мы могли бы войти в запущенный контейнер через docker exec и выполнить pip install, но эти изменения исчезнут после перезагрузки. Для постоянной работы мы используем механизм requirements-local.txt.
При развертывании через docker compose система проверяет наличие файла requirements-local.txt. Все пакеты из этого файла автоматически устанавливаются при запуске.
Шаг 2.1. Создание файла требований
Создайте файл requirements-local.txt в подкаталоге docker (он находится в корневой директории вашего проекта рядом с файлами docker-compose.yml).
Выполните команду из корня репозитория:
bashtouch ./docker/requirements-local.txt
Шаг 2.2. Добавление драйвера
Добавьте название пакета в созданный файл. Это можно сделать через текстовый редактор или командой:
bashecho "mysqlclient" >> ./docker/requirements-local.txt
Шаг 2.3. Применение изменений
-
Вариант А: Использование готового образа
Если вы используете стандартный образ Fincomtech Analytics, просто перезапустите контейнеры. Скрипт инициализации обнаружит файл и доустановит пакеты.bashdocker compose -f docker-compose-non-dev.yml up
Проверка: Войдите в контейнер (docker exec -it <container_name> bash) и выполните pip freeze | grep mysqlclient. Пакет должен быть в списке. -
Вариант Б: Использование кастомного образа
Если вы собираете свой образ локально, необходимо пересобрать его для включения новых слоев:bashdocker compose build --force-rm docker compose up
3. Подключение к источнику данных
После успешной установки драйвера вы можете настроить подключение через веб-интерфейс Fincomtech Analytics.
- Войдите в систему с правами администратора.
- Перейдите в меню: Настройки -> Данные -> Подключения к базе данных.
- Нажмите кнопку + БАЗА ДАННЫХ.
- Выберите тип базы и следуйте инструкциям мастера настройки.
Для формирования правильной строки подключения (SQLAlchemy URI) обратитесь к документации по конкретной СУБД. Например, параметры для MySQL могут отличаться в зависимости от ОС хоста (Linux/Mac).
Нажмите «Проверить подключение». При корректной настройке вы увидите сообщение: «Подключение в порядке!».
4. Устранение неполадок
Если тест подключения не пройден:
- Проверьте логи Docker. Ищите ошибки, связанные с импортом модулей Python.
-
Изолируйте проблему. Fincomtech Analytics использует SQLAlchemy. Попробуйте запустить Python внутри контейнера приложения и установить соединение вручную, минуя интерфейс системы:
pythonfrom sqlalchemy import create_engine engine = create_engine('ваша_строка_подключения') connection = engine.connect() print("Успех")Это поможет понять, где находится проблема: в сетевом доступе, учетных данных или в самом драйвере.
Повторите этот процесс для каждого нового типа базы данных, который вы хотите подключить к Fincomtech Analytics.