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

Airflow Docker部署添加外部网络后Scheduler启动报错问题咨询

问题产生原因

  • 核心原因是Docker网络服务名解析冲突:当你将compose全局默认网络替换为外部网络ti-network后,所有服务的域名解析都在该外部网络范围内生效。如果该外部网络中已经存在其他名称为postgres的容器/服务,Airflow组件配置的数据库地址postgres会被解析到外部网络中已有的旧postgres实例,而非当前compose启动的postgres实例。旧实例的airflow用户密码与你当前配置的密码不匹配,因此触发密码校验失败报错。
  • 当你移除外部网络配置后,compose会为当前项目创建独立的隔离默认网络,网络内仅存在当前compose启动的服务,postgres解析指向正确的本地实例,因此服务正常运行。

解决方案

按照以下步骤操作即可在保留外部网络的前提下解决问题:

  1. 排查冲突服务
    执行命令查看外部网络内的运行容器:
docker network inspect ti-network

检查返回结果的Containers字段,确认是否存在名称或别名包含postgres的其他容器。

  1. 解决解析冲突(二选一即可)

    • 方案A:修改当前compose内postgres服务名称
      将services.postgres重命名为airflow-postgres,同时同步修改x-airflow-common.environment下的两处数据库配置:
      AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@airflow-postgres/airflow
      AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@airflow-postgres/airflow
      
    • 方案B:为postgres服务添加专属网络别名
      在原有postgres服务配置中新增网络别名配置,无需修改服务名:
      services:
        postgres:
          image: postgres:13
          networks:
            default:
              aliases:
                - airflow-postgres
          # 其余原有配置保持不变
      
      同样同步修改上述两处数据库配置的主机名为airflow-postgres。
  2. 清理旧资源并重启
    先执行命令清理旧的postgres数据卷,避免旧初始化数据干扰:

docker-compose down -v

确认外部网络ti-network已存在,不存在则执行docker network create ti-network创建,之后重新执行启动命令即可:

docker-compose build
docker-compose up airflow-init 
docker-compose up

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:36:03