#docker #dockerfile #pyodbc #docker-image #python-3.9
Вопрос:
У меня есть код на python, который отлично работает для извлечения данных из API, но у меня возникают проблемы с его запуском через docker. Я использую pyodbc для загрузки данных в SQLServer в своем коде python. Вот мой док-файл:
FROM python:3.9.2
RUN apt-get update -y amp;amp; 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"]
После создания образа docker, когда я пытаюсь запустить образ docker, я получаю следующую ошибку:
Ошибка!!!!: (‘01000’, «[01000] [unixODBC][Диспетчер драйверов]Не удается открыть библиотеку ‘Драйвер ODBC 17 для SQL Server’ : файл не найден (0) (SQLDriverConnect)»)
Может ли кто-нибудь сообщить мне, как мне избавиться от этой ошибки?
Комментарии:
1. Вам необходимо установить собственные драйверы SQL-сервера. Эта статья от MS должна помочь: docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/…
2. @Mureinik, Спасибо за помощь, но это не решило проблему. У меня уже были установлены и связаны файлы odbc. Я все еще сталкиваюсь с той же проблемой при попытке запустить свой код через docker.
Ответ №1:
Я смог запустить свой код, обновив файл dockerfile для запуска установки базы данных SQL, а также python. Вот как выглядит мой новый файл dockerfile.
FROM ubuntu:18.04
RUN apt-get update -y amp;amp;
apt-get install -y
libpq-dev
gcc
python3-pip
unixodbc-dev
RUN apt-get update amp;amp; apt-get install -y
curl apt-utils apt-transport-https debconf-utils gcc build-essential g -5
amp;amp; 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"]