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

Docker Compose中Airflow WebServer无法识别Scheduler问题求助

问题排查与解决方案

1. 修正Postgres端口与数据库连接配置

你的Postgres容器端口映射错误,默认Postgres端口是5432,但配置中写成了"5431:5431",导致Airflow服务无法连接数据库。同时Webserver和Scheduler缺少明确的数据库连接配置:

  • 修改Postgres的ports为:"5431:5432"(宿主机5431映射容器内默认5432端口)
  • 在webserver和scheduler的environment中添加数据库连接变量:
    - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@postgres:5432/airflow
    

2. 添加Airflow初始化步骤

Airflow首次启动需要初始化数据库表结构、创建管理员用户,当前配置缺少这一步:
在docker-compose.yml的services中新增初始化服务:

init:
    image: jh111/airflow-hadoop-spark:test
    environment:
        - AIRFLOW_HOME=/home/airflow
        - AIRFLOW__CORE__LOAD_EXAMPLES=False
        - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@postgres:5432/airflow
    depends_on:
        - postgres
    command: bash -c "airflow db init && airflow users create --username admin --password admin --firstname Admin --lastname User --role Admin --email admin@example.com"

启动时先执行docker-compose run init完成初始化,再启动其他服务。

3. 移除无效的Scheduler配置

Scheduler配置中的AIRFLOW_WEBSERVER_HOST=webserver并非Airflow标准配置,Scheduler依赖数据库同步状态而非直接连接Webserver,直接删除该环境变量。

4. 检查DAG文件夹权限

挂载的DAG文件夹可能存在权限问题,导致Airflow无法读取文件:

  • 进入容器查看权限:docker-compose exec webserver ls -l /home/airflow/dags
  • 若权限不足,修改宿主机DAG文件夹权限:chmod -R 755 ../dags

5. 重启服务验证

完成上述修改后执行以下步骤:

  • 停止所有服务:docker-compose down
  • 执行初始化:docker-compose run init
  • 启动服务:docker-compose up -d
  • 查看Scheduler日志确认运行状态:docker-compose logs scheduler
  • 查看Webserver日志:docker-compose logs webserver

修正后的完整docker-compose.yml

version: "3.7"
services:
    postgres:
        image: "postgres:13"
        container_name: "postgres"
        environment:
          - POSTGRES_USER=airflow
          - POSTGRES_PASSWORD=airflow
          - POSTGRES_DB=airflow
        ports:
        - "5431:5432"
        volumes:
        - ./data/postgres:/var/lib/postgresql/data

    init:
        image: jh111/airflow-hadoop-spark:test
        environment:
            - AIRFLOW_HOME=/home/airflow
            - AIRFLOW__CORE__LOAD_EXAMPLES=False
            - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@postgres:5432/airflow
        depends_on:
            - postgres
        command: bash -c "airflow db init && airflow users create --username admin --password admin --firstname Admin --lastname User --role Admin --email admin@example.com"

    webserver:
        image: jh111/airflow-hadoop-spark:test
        restart: always
        networks:
            - default_net
        environment:
            - AIRFLOW_HOME=/home/airflow
            - AIRFLOW__CORE__LOAD_EXAMPLES=False
            - AIRFLOW__CORE__dags_folder=/home/airflow/dags
            - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@postgres:5432/airflow
        volumes:
            - ../dags:/home/airflow/dags #DAG folder
        ports:
            - "7777:7777"
        depends_on:
            - postgres
        command: bash -c "airflow webserver --port 7777"

    scheduler:
        image: jh111/airflow-hadoop-spark:test
        restart: always
        networks:
            - default_net
        environment:
            - AIRFLOW_HOME=/home/airflow
            - AIRFLOW__CORE__LOAD_EXAMPLES=False
            - AIRFLOW__CORE__dags_folder=/home/airflow/dags
            - AIRFLOW__DATABASE__SQL_ALCHEMY_CONN=postgresql+psycopg2://airflow:airflow@postgres:5432/airflow
        volumes:
            - ../dags:/home/airflow/dags #DAG folder
        depends_on:
            - postgres
        command: bash -c "airflow scheduler"

networks:
    default_net:

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 06:09:50