docker ошибка запуска: DPI-1047: невозможно найти 64-битную Oracle клиентскую библиотеку - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь сделать очень простое приложение python с подключением к базе данных Oracle и выполнить его на Docker. Это приложение работает нормально на моей локальной машине.

Я успешно смог создать это приложение, но получил ошибку при выполнении его на Docker.

DockerFile:

FROM python:3

ADD File.py /

RUN pip install cx_Oracle
RUN pip install pandas
RUN pip install openpyxl

CMD [ "python", "./File.py" ]

File.py:

import cx_Oracle
import pandas as pd

#creating database connection
dsn_tns = cx_Oracle.makedsn('dev-tr01.com', '1222', service_name='ast041.com')
conn = cx_Oracle.connect(user=r'usr', password='3451', dsn=dsn_tns)
c = conn.cursor()

query ='SELECT * FROM Employee WHERE ROWNUM <10'
result = pd.read_sql(query, con=conn)
result.to_excel("batchtable.xlsx")

conn.close()

Ошибка:

docker запустить python_batchdriver: последний

cx_ Oracle .DatabaseError: DPI-1047: не удается найти 64-битную Oracle клиентскую библиотеку: " libclnt sh .so: невозможно открыть общий объектный файл: такого файла или каталога нет ". См. https://oracle.github.io/odpi/doc/installation.html#linux для получения помощи

1 Ответ

0 голосов
/ 11 февраля 2020

Для cx_ Oracle вам также необходимо установить Oracle Instant Client библиотеки. См. cx_ Oracle инструкции по установке .

Существуют различные способы автоматизации установки в Docker. Один пример:

RUN wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip && \
    unzip instantclient-basiclite-linuxx64.zip && \
    rm -f instantclient-basiclite-linuxx64.zip && \
    cd instantclient* && \
    rm -f *jdbc* *occi* *mysql* *jar uidrvci genezi adrci && \
    echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf && \
    ldconfig

Вам также понадобится пакет libaio или libaio1.

См. Docker для Oracle Приложения баз данных в Node.js и Python .

Также см. Установка Oracle Мгновенный клиент в Docker контейнер для Python cx_ Oracle Обратите внимание, что шаги могут отличаться, если вы не используете Распределение Linux на основе Debian.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...