Ошибка драйвера 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-драйвер в контейнере? Любое руководство будет высоко оценено!

Вернуться на верх