Ошибка запуска кода Python через образ докера

У меня есть код Python, который отлично работает для извлечения данных из API, но у меня возникают проблемы с его запуском через докер. Я использую pyodbc для загрузки данных в SQLServer в моем коде Python. Вот мой докерфайл:

FROM python:3.9.2

RUN apt-get update -y && apt-get install -y --no-install-recommends \
    unixodbc-dev \
    unixodbc \
    libpq-dev 

WORKDIR /app

COPY requirements.txt requirements.txt

RUN pip3 install -r requirements.txt

COPY . .

CMD ["python3","LoadAPI_data.py"]

После создания образа докера, когда я пытаюсь запустить образ докера, я получаю следующую ошибку:

Ошибка !!!!: («01000», [01000] [unixODBC] [Диспетчер драйверов] Не удается открыть библиотеку «Драйвер ODBC 17 для SQL Server»: файл не найден (0) (SQLDriverConnect))

Может ли кто-нибудь дать мне знать, как мне избавиться от этой ошибки?


person RB17    schedule 18.04.2021    source источник
comment
Вам необходимо установить собственные драйверы SQL-Server. Эта статья от MS должна помочь: docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/   -  person Mureinik    schedule 18.04.2021
comment
@Mureinik, спасибо за помощь, но это не решило проблему. У меня уже были установлены и связаны файлы odbc. Я все еще получаю ту же проблему при попытке запустить свой код через докер.   -  person RB17    schedule 19.04.2021


Ответы (1)


Я смог запустить свой код, обновив файл докеров, чтобы запустить установку SQL DB, а также python. Вот как выглядит мой новый dockerfile.

FROM ubuntu:18.04

RUN apt-get update -y && \      
    apt-get install -y \    
    libpq-dev \     
    gcc \
    python3-pip \
    unixodbc-dev

RUN apt-get update && apt-get install -y \
    curl apt-utils apt-transport-https debconf-utils gcc build-essential g++-5\
    && rm -rf /var/lib/apt/lists/*

RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN ACCEPT_EULA=Y apt-get install -y --allow-unauthenticated msodbcsql17

RUN pip3 install pyodbc

WORKDIR /app

COPY requirements.txt requirements.txt


RUN pip3 install -r requirements.txt

COPY . .

CMD ["python3","LoadAPI_data.py"]
person RB17    schedule 19.04.2021