我正在使用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
我想使用像这样的OracleOperator在DAG任务中的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 Instant Client。我已经尝试过创建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数据库设置了气流。有人可以帮我吗?
答案 0 :(得分:0)
因此,您将需要构建自己的docker映像以添加oracle数据库客户端。 3个步骤: 1.下载最新的oracle db客户端 2.将这些文件添加到您以前的docker基本映像中 3.再试一次。
在第二步中,您将需要编写Dockerfile进行重建。它可能喜欢关注
从Puckel / docker-airflow 添加oracle-instantclient * .rpm / tmp / ... ...