【发布时间】:2019-05-21 16:09:02
【问题描述】:
我正在使用 puckel's airflow docker images 运行一个气流应用程序,该应用程序将从 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
我想在 DAG 任务中使用 OracleOperator 在 oracle 数据库中运行查询,如下所示:
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 即时客户端。我已经尝试过创建this oracle instant client image并以这种方式将其添加到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
我实际上期望气流已经设置为连接到 oracle 数据库。有人可以帮我吗?
【问题讨论】:
标签: oracle docker docker-compose airflow