Docker Compose部署Airflow HA遇502错误,请求解决方法
解决Docker Compose启动Airflow-init时的502 Bad Gateway问题
排查方向与解决方案
1. 先确认Docker引擎本身状态
- 检查Docker服务运行情况:Linux环境执行
systemctl status docker,Windows/macOS直接查看Docker Desktop是否处于运行状态。未启动的话,Linux用systemctl start docker启动服务,桌面版直接重启Docker。 - 验证当前用户Docker操作权限:执行
docker ps测试,若提示权限不足,将用户加入docker组:sudo usermod -aG docker $USER,之后重新登录会话再操作。
2. 核对Docker Socket挂载配置
Airflow初始化服务需要访问Docker引擎的socket,官方默认配置中会包含 - /var/run/docker.sock:/var/run/docker.sock 的挂载项。打开你的docker-compose.yaml,找到airflow-init服务的volumes部分,确认该挂载项未被误删。如果缺失,添加后重新执行初始化命令。
3. 清理残留Docker资源后重试
旧的容器、网络、卷残留可能引发冲突:
- 彻底清理现有资源:
docker-compose down -v,该命令会删除关联的容器、网络和卷。 - 先单独启动依赖服务:
docker-compose up -d mysql rabbitmq,等待10秒左右让服务稳定运行。 - 重新执行初始化命令:
docker-compose up airflow-init。
4. 检查MySQL与RabbitMQ配置正确性
后端服务配置错误可能间接引发Docker相关报错,需重点核对:
- 验证MySQL连接串
AIRFLOW__DATABASE__SQL_ALCHEMY_CONN:格式必须为mysql+pymysql://<用户名>:<密码>@<mysql容器名>:3306/<数据库名>?charset=utf8mb4,确保MySQL容器内已创建目标数据库,且用户拥有读写权限。 - 验证RabbitMQ配置:
AIRFLOW__CELERY__BROKER_URL格式应为amqp://<用户名>:<密码>@<rabbitmq容器名>:5672//;AIRFLOW__CELERY__RESULT_BACKEND需使用与SQL_ALCHEMY_CONN一致的MySQL连接串。 - 可单独进入MySQL容器验证连接:
docker exec -it <mysql容器名> mysql -u<用户名> -p<密码>,确认能正常登录并访问目标数据库。
5. 升级Docker Compose版本
Airflow 2.x要求Docker Compose版本至少为1.29以上。执行 docker-compose --version 查看当前版本,若版本过低,直接升级到最新稳定版即可。
内容的提问来源于stack exchange,提问作者linhnq
相关产品推荐
相关产品推荐

