Ошибка драйвера ODBC: Файл не найден при запуске сценария Python в контейнере Docker
Я запускаю скрипт Python (sharepoint_to_json.py) внутри контейнера Docker, который подключается к базе данных SQL Server с помощью драйвера ODBC. Моя цель - преобразовать данные из файла Excel (.xlsx) в формат JSON внутри моего сервера, используя скрипт sharepoint_to_json.py. Этот процесс должен выполняться внутри контейнера Docker после установления соединения с базой данных SQL Server.
Я уже установил драйвер msodbcsql17 в контейнер, и мое подключение к базе данных работает при запуске других скриптов. Однако, когда я пытаюсь запустить сценарий sharepoint_to_json.py, я сталкиваюсь со следующей ошибкой:
<<0><>При
обработке файла Excel возникла ошибка: ('01000', «[01000] [unixODBC][Driver Manager]Can't open lib „/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1“ : file not found (0) (SQLDriverConnect)»)<<1><>Вот соответствующая часть моего Dockerfile:
FROM python:3.12
RUN apt-get update && apt-get install -y
curl
gnupg2
apt-transport-https
unixodbc
unixodbc-dev
python3-distutils
build-essential
&& curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
&& curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
&& apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql17
Установите рабочий каталог в контейнере
WORKDIR /app
Обновление pip, setuptools, wheel для обеспечения последних версий
RUN pip install --upgrade pip setuptools wheel
Скопируйте файл requirements.txt
COPY requirements.txt .
Установите зависимости
RUN pip install -r requirements.txt
Скопируйте файлы проекта
COPY . /app/
Открыть порт 8000
EXPOSE 8000
Установите переменную окружения, указывающую на то, что Django запущен в контейнере
ENV PYTHONUNBUFFERED 1
Команда по умолчанию
CMD [«sh», «-c», «python wait_for_db.py && python manage.py makemigrations && python manage.py migrate && python test_connection.py && python sharepoint_to_json.py && python manage.py runserver 0.0.0.0:8000»]
Я проверил, что драйвер msodbcsql17 правильно установлен в контейнере. Я проверил путь /opt/microsoft/msodbcsql17/lib64/, но файл libmsodbcsql-17.9.so.1.1, похоже, не существует. Я убедился, что мой odbcinst.ini правильно настроен.
Мои вопросы: Почему драйвер, похоже, работает для других скриптов, но не работает для этого конкретного (sharepoint_to_json.py)? Как исправить ошибку отсутствия файла в настройках Docker? Есть ли лучший способ проверить, правильно ли установлен и распознан ODBC-драйвер в контейнере? Любое руководство будет высоко оценено!