【问题标题】:Airflow with Docker connect to a local Host PostgreSQL带有 Docker 的 Airflow 连接到本地主机 PostgreSQL
【发布时间】:2021-10-16 14:19:17
【问题描述】:

我正在使用 docker 运行气流。

我想查询本地主机上的 PostgresSQl 中的一些数据。

这是我的 dag:

def queryPostgresql():
    conn_string="dbname='datawarehouse' host='localhost' user='postgres' password='admin'"
    conn=db.connect(conn_string)
    df=pd.read_sql("select name,city from test",conn)
    df.to_csv('data.csv')
    print("-------Data Saved------")

我正在添加与气流的连接:

psycopg2.OperationalError: could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?

是否可以从我的 Airflow Docker 查询我的 PgSQL?我应该改为在 docker 中安装 PgSQL 吗?

【问题讨论】:

    标签: docker airflow


    【解决方案1】:

    当您尝试在 Airflow 中访问 localhost 时,它会尝试连接到在 Airflow 容器上运行的 Postgres,但该容器不存在。默认情况下,来自容器的localhost 不会路由到 Docker 主机。

    几个选项:

    • 使用host.docker.internal而不是localhost连接到Docker主机
    • 在 Docker Compose 网络中运行 Airflow 和 Postgres 并通过容器名称(psql 等)进行连接

    还有一些其他方法可以处理主机文件等,但以上可能是您最简单的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-04
      • 2022-11-30
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 2020-01-20
      • 2017-06-13
      相关资源
      最近更新 更多