Pantsbuild远程执行报错:Connection refused无法连接远程机器
问题排查与解决建议
针对你遇到的Pants远程执行连接拒绝问题(native_engine.IntrinsicError: Unavailable: "error trying to connect: tcp connect error: Connection refused (os error 111)"),可以从以下几个方向排查:
验证Docker端口映射与监听地址
- 在远程机器上执行
docker ps,检查example-repi-server容器的端口映射状态,确保主机端口(比如默认的50051)和容器端口正确绑定,且映射规则是0.0.0.0:<端口>:<容器端口>而非仅127.0.0.1:<端口>(后者仅允许容器本地访问)。 - 进入远程容器,确认REPI服务的启动命令绑定了
0.0.0.0而非127.0.0.1,例如启动命令应为./example-repi-server --address 0.0.0.0:50051,避免服务仅监听容器内部localhost。
- 在远程机器上执行
检查远程机器的端口可达性
- 在本地执行
nc -zv <远程机器IP> <REPI端口>或telnet <远程机器IP> <REPI端口>,直接测试TCP端口是否可访问——ping和SSH仅证明基础网络连通,但不代表目标端口开放。 - 排查远程机器的防火墙(ufw/iptables)或安全组规则,确保允许目标端口的TCP入站流量。
- 在本地执行
核对Pants配置的准确性
确认pants.toml中的remote_execution.address配置为<远程机器IP>:<正确端口>,避免端口号写错或IP配置错误。检查远程容器的服务状态
执行docker logs <容器ID>查看远程容器的启动日志,确认example-repi-server是否正常启动、有没有依赖缺失或架构不兼容的报错——即使你配置了Python解释器,REPI服务本身可能有底层架构依赖,需确保容器镜像是适配远程机器架构(如arm64)的版本。
内容的提问来源于stack exchange,提问作者Zavit
相关产品推荐
相关产品推荐

