You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker环境下Airflow连接PostgreSQL的端口配置问题排查

问题分析与解决方法

问题判断验证

你的问题判断不准确。错误核心并非需要为Airflow服务暴露5432端口,而是Docker容器间的网络寻址错误:

  • Airflow任务运行在worker容器内部,代码中localhost指向的是worker容器本身,而非你部署的独立PostgreSQL容器,因此出现连接拒绝。
  • Docker容器间通信不需要将端口暴露到宿主机,只要服务处于同一Docker网络,即可通过容器名称直接访问。

解决步骤

1. 修正Airflow PostgreSQL连接配置

在Airflow Web UI中编辑postgres_default连接:

  • 将**主机(Host)**字段从localhost修改为你docker-compose.yaml中新增的PostgreSQL服务名称(例如你配置的服务名如果是postgres_data,就填这个名称)。
  • 确保端口、数据库名、用户名、密码与你在docker-compose.yaml中为PostgreSQL设置的参数一致。

2. 确保所有服务处于同一Docker网络

检查你的docker-compose.yaml,确保新增的PostgreSQL和pgadmin服务加入Airflow默认的网络(通常Airflow官方compose定义的网络是airflow_default)。修改示例如下:

# 找到你新增的PostgreSQL服务配置,添加networks字段
postgres_data:
  image: postgres:15
  environment:
    POSTGRES_USER: your_user
    POSTGRES_PASSWORD: your_password
    POSTGRES_DB: your_db
  volumes:
    - postgres_data_volume:/var/lib/postgresql/data
  networks:
    - airflow_default  # 加入Airflow默认网络

# 同理修改pgadmin服务
pgadmin:
  image: dpage/pgadmin4
  environment:
    PGADMIN_DEFAULT_EMAIL: your_email
    PGADMIN_DEFAULT_PASSWORD: your_password
  volumes:
    - pgadmin_data:/var/lib/pgadmin
  ports:
    - "5050:80"
  networks:
    - airflow_default  # 加入同一网络

3. 重启服务使配置生效

执行以下命令重启所有服务:

docker compose down
docker compose up -d

完成以上步骤后,重新触发DAG任务即可正常连接PostgreSQL并执行数据写入操作。

内容的提问来源于stack exchange,提问作者Demetri Pananos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:02:34