Docker中运行的Camel REST调用无法正常工作
解决Docker中Camel REST服务无法访问的NoHttpResponseException问题
问题根源
你的Camel REST配置里,host("localhost")让Netty-HTTP组件仅绑定到容器内部的回环地址(127.0.0.1),容器外部(包括宿主机)的请求无法穿透到这个端口,因此抛出NoHttpResponseException。而Spark服务正常是因为Spark默认会绑定到0.0.0.0(所有网络接口),容器暴露端口后外部请求能正常抵达。
修复方案
修改Camel的restConfiguration部分,将host从localhost替换为0.0.0.0,让服务监听容器的所有网络接口:
this.restConfiguration() .bindingMode(RestBindingMode.auto) .component("netty-http") .host("0.0.0.0") // 替换localhost为0.0.0.0 .port(11010);
补充说明
- 修改后,Camel的REST服务会绑定到容器的所有可用网络接口,外部请求通过Docker暴露的11010端口即可正常访问。
- 确保Docker配置中正确暴露端口:Dockerfile里添加
EXPOSE 11010 11011,运行容器时使用-p 11010:11010 -p 11011:11011映射端口。
内容的提问来源于stack exchange,提问作者Amen
相关产品推荐
相关产品推荐

