我的本地计算机上运行着一个Docker容器,我需要调用一个REST,该REST在Google Cloud Platform的专用VPN上公开。
让我们说该REST是由计算机 external.service.com 公开的。 为了从本地计算机访问它,我执行了以下步骤:
在che Google Cloud SDK Shell上运行命令:gcloud compute ssh test-2 --ssh-flag="-L 2001:192.168.0.10:100"
。其中 192.168.0.10:100 是与VPN内部的 external.service.com 相对应的IP。这使我可以从 localhost:2001
在Windows 10上的主机文件中添加以下行:127.0.0.1 external.service.com
现在在Postman上,我可以通过URL https://external.service.com:2001/api到达“私有” REST服务
出于测试目的,我应该从本地计算机上运行的Docker容器获得相同的REST服务。 我知道要从Docker容器访问主机,我需要使用机器活动接口的IP,因为每个Docker容器都将自身引用127.0.0.1。
因此,我在docker-compose.yml
中添加了以下属性:
extra_hosts:
- "external-service.com:192.168.xxx.x"
其中192.168.xxx.x是我的IP地址。
鉴于此信息,调用Docker容器内 external.service.com 公开的REST服务,我得到以下错误:
org.apache.http.conn.HttpHostConnectException: Connect to external.service.com:2001 [external.service.com/192.168.137.1] failed: Connection refused (Connection refused)
最后,不能说Docker将 external.service.com 转换为 localhost:2001 或(192.168.xxx.x:2001) 以达到Google Cloud端口转发可访问的REST服务。
您能帮我看看我在做什么错吗?