向 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 作业