向 localhost 数据库添加气流连接(在 docker 上运行的 postgres)

Posted

技术标签:

【中文标题】向 localhost 数据库添加气流连接(在 docker 上运行的 postgres)【英文标题】:add an airflow connection to a localhost database (postgres running on docker) 【发布时间】:2021-09-19 07:43:57 【问题描述】:

我有一个在本地运行的 dockerized postgres,我可以通过 pgAdmin4 和psql 连接到它。

使用相同的连接细节,我在 UI 上设置了气流连接

但是,当尝试加载使用该连接的 DAG 时,会引发错误:

Broken DAG:[/usr/local/airflow/dags/s3upload.py] Traceback(最近一次调用最后一次): 文件“/usr/local/lib/python3.7/site-packages/airflow/providers/postgres/hooks/postgres.py”,第 113 行,在 get_conn self.conn = psycopg2.connect(**conn_args) 文件“/usr/local/lib/python3.7/site-packages/psycopg2/init.py”,第 127 行,在连接中 conn = _connect(dsn,connection_factory=connection_factory,**kwasync) psycopg2.OperationalError:无法连接到服务器:连接被拒绝 服务器是否在主机“127.0.0.1”上运行并接受 端口 54320 上的 TCP/IP 连接?

如前所述,postgres 实例正在运行,端口转发处于活动状态,成功的 pgAdmin 和 psql 登录证明了这一点。

有什么想法吗?

【问题讨论】:

气流是否在另一个 docker 容器中运行? 是的!没想到……你知道在这种情况下如何正确定义主机吗? 是的,刚刚回答 【参考方案1】:

使用host.docker.internal,它将指向您的本地主机而不是容器本地主机,如果pg端口映射到您的5432端口,它将起作用。

【讨论】:

以上是关于向 localhost 数据库添加气流连接(在 docker 上运行的 postgres)的主要内容,如果未能解决你的问题,请参考以下文章

从 Airflow(使用气流 Livy 运算符)向 Livy(在 EMR 中)提交 Spark 作业

气流调度程序不断崩溃,数据库连接错误(谷歌作曲家)

如何在气流中配置 Google Cloud BigQuery

气流 <--> Greenplum

气流 [Errno 104] 对等方重置连接

apache气流的sql查询