Как включить Oracle Instant Client в док-контейнеры для воздушных потоков? - PullRequest
0 голосов
/ 21 мая 2019

Я использую образ докера воздушного потока puckel для запуска приложения воздушного потока, которое собирается извлечь данные из базы данных Oracle и передать их в другую базу данных. Я предоставил переменные окружения для соединения с базой данных в docker-composeCeleryExecutor , которые выглядят так:

AIRFLOW_CONN_ORACLE_FLXP=oracle://oracle_user:XXXXXXXXXXXX@1.1.1.1:1521?encoding=UTF-8&nencoding=UTF-8&threaded=False&events=False&mode=sysdba&purity=new

Я хочу выполнить запрос в базе данных oracle в задаче DAG с использованием OracleOperator, например:

t1 = OracleOperator(
    task_id='run_query',
    sql=query,
    oracle_conn_id='oracle_flxp',
    dag=dag)

Однако задача не выполняется со следующей ошибкой:

{{models.py:1788}} ERROR - DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory".

Я подумал, что мне, возможно, понадобится установить мгновенный клиент oracle в мой контейнер воздушного потока или в отдельный контейнер. Я уже пытался создать этот образ клиента мгновенного оракула и добавил его в docker-composeCeleryExecutor следующим образом:

    oracle:
        image: oracle/instantclient:12.2.0.1
        command: sqlplus -v
    webserver:
        depends_on:
            - oracle
        ...

Но ошибка все та же. Кроме того, когда я запускаю docker-compose, контейнер oracle инициализируется, но после повторного выхода снова выводит строку:

docker-airflow_oracle_1 exited with code 0

Я действительно ожидал, что поток воздуха уже будет настроен для подключения к базам данных оракула. Может ли кто-нибудь помочь мне здесь?

1 Ответ

0 голосов
/ 11 июня 2019

На самом деле, вам понадобится создать собственные образы докеров, чтобы добавить клиент базы данных oracle.3 шага: 1. скачайте последнюю версию oracle db client 2. добавьте этот файл в ранее созданный вами базовый образ докера 3. попробуйте еще раз.

на втором шаге вам потребуется написать Dockerfile для восстановления.может понравиться после

ОТ шайба / докер-поток воздуха ДОБАВИТЬ oracle-instantclient * .rpm / tmp / ... ...

...