将气流连接添加到本地主机数据库(docker 上的 postgres 运行)

add an airflow connection to a localhost database (postgres running on docker)

我在本地有一个 dockerized postgres 运行,我可以通过 pgAdmin4 和 psql.

连接到它

使用相同的连接细节,我在 UI

上设置了气流连接

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

Broken DAG: [/usr/local/airflow/dags/s3upload.py] Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/airflow/providers/postgres/hooks/postgres.py", line 113, in get_conn self.conn = psycopg2.connect(**conn_args) File "/usr/local/lib/python3.7/site-packages/psycopg2/init.py", line 127, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync) psycopg2.OperationalError: could not connect to server: Connection refused Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 54320?

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

有什么想法吗?

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