本地Docker部署下Airflow连接Airbyte失败求助
Airflow与Airbyte Docker环境连接失败(Connection Refused)排查方案
环境与问题概述
- 部署方式:本地Docker部署Airflow(CeleryExecutor)+ Airbyte
- 已完成配置:Airflow的
docker-compose.yaml中设置:ADDITIONAL_REQUIREMENTS: ${_PIP_ADDITIONAL_REQUIREMENTS:- apache-airflow-providers-http apache-airflow-providers-airbyte apache-airflow-providers-airbyte[http]} - 尝试操作:按官方文档配置Airflow连接(含选择
Conn Type: Airbyte) - 错误信息:
HTTPConnectionPool(host='localhost', port=8001): Max retries exceeded with url: /api/v1/health (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f30e9e4fb10>: Failed to establish a new connection: [Errno 111] Connection refused'))
排查与解决步骤
1. 替换localhost为Airbyte容器的服务名/IP
Docker容器内的localhost指向容器自身,而非宿主机,需用Airbyte容器的实际地址:
- 若Airflow与Airbyte在同一Docker网络:将Airflow连接配置中的
Host从localhost改为Airbyte web服务的默认容器名airbyte-webapp,端口保持8001 - 若不在同一网络:执行
docker inspect <airbyte-webapp-container-id> | grep "IPAddress"获取Airbyte容器IP,用该IP替换localhost
2. 确认Airbyte服务正常运行
- 执行
docker ps检查airbyte-webapp容器状态,确保处于Up状态 - 在宿主机访问
http://localhost:8001/api/v1/health,确认返回{"status":"SERVING"},若宿主机无法访问,先排查Airbyte自身启动问题
3. 验证Docker网络连通性
- 若两者不在同一网络,手动添加共享网络:
# 创建共享网络(若不存在) docker network create air-airbyte-network # 将Airflow容器加入网络 docker network connect air-airbyte-network <airflow-webserver-container-id> # 将Airbyte容器加入网络 docker network connect air-airbyte-network <airbyte-webapp-container-id> - 在Airflow Worker容器内测试连通性:
若返回健康信息,说明网络正常,再检查Airflow连接配置docker exec -it <airflow-worker-container-id> curl http://airbyte-webapp:8001/api/v1/health
4. 检查Airflow连接配置细节
- 确保
Conn Type选择Airbyte(而非HTTP) Host字段填写正确的Airbyte服务地址(容器名/IP),不要添加http://前缀- 点击连接配置页的「Test」按钮验证连接
5. 确认Airflow依赖已正确安装
- 进入Airflow Worker容器检查依赖:
docker exec -it <airflow-worker-container-id> pip list | grep apache-airflow-providers-airbyte - 若无输出,说明依赖未安装成功,重启Airflow容器让配置生效:
docker-compose down -v docker-compose up -d
内容的提问来源于stack exchange,提问作者Cihan Altun
相关产品推荐
相关产品推荐

