Как запустить SSL_library_init () из образа докера Python 3.7 - PullRequest
1 голос
/ 25 октября 2019

До недавнего времени я использовал openssl библиотеку в python:3.6.6-jessie образе докера, и все работало как задумано.

Я использую очень простую Dockerfile конфигурацию, чтобы установить все необходимые зависимости:

FROM python:3.6.6-jessie
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /code

RUN apt-get -qq update
RUN apt-get install openssl
RUN apt-get upgrade -y openssl
ADD requirements.txt /code/
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

И получить доступ и инициализировать саму библиотеку с помощью этих 2 строк:

openssl = cdll.LoadLibrary("libssl.so")
openssl.SSL_library_init()

С этим подходом все работало замечательно.


На этой неделе я занимался обновлением python и библиотек, и в результате я переключился на новый образ докера:

FROM python:3.7.5
...

Это немедленновынудил openssl перестать работать из-за этого исключения:

AttributeError: /usr/lib/x86_64-linux-gnu/libssl.so.1.1: undefined symbol: SSL_library_init

Из этой ошибки я могу понять, что libssl больше не предоставляет метод SSL_library_init (или так кажется), что довольно страннопроблема, потому что имя инициализатора в документации openssl такое же.

Я также пытался решить эту проблему с помощью дистрибутивов -stretch и -buster, но проблема остается.

Что является правильнымподход для запуска SSL_library_init в этих новых дистрибутивах? Может быть, требуется дополнительная конфигурация dockerfile?

1 Ответ

0 голосов
/ 26 октября 2019

Я думаю, вам нужно установить libssl1.0-dev

RUN apt-get install -y libssl1.0-dev
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...