如何在Airflow中通过curl调用Docker容器内的API?
问题解决:DockerOperator中curl命令无法连接API的修正
正确的command参数
将curl命令中的http://0.0.0.0:8080/somepath替换为http://localhost:8080/somepath,修正后的代码如下:
curl = "curl --request POST --url http://localhost:8080/somepath" dop = DockerOperator( api_version="1.37", docker_url="TCP://docker-socket-proxy:2375", command=curl, # 补充其他必要参数(如image、task_id等) )
原因说明
0.0.0.0是容器用于监听所有网络接口的地址,并非容器内部访问自身服务的有效地址。在容器内部访问自身运行的API服务,必须使用localhost或127.0.0.1。- 如果你的API服务是部署在Airflow所在Docker网络中的另一个独立容器,则需要替换为该容器对应的服务名称(比如服务名为
api-service,则使用http://api-service:8080/somepath),Docker会自动通过服务名解析到对应容器的IP。
内容的提问来源于stack exchange,提问作者schoon
相关产品推荐
相关产品推荐

