我在 C# 中创建了几个在 Windows docker 上运行的微服务,我需要从另一个微服务调用微服务,所以我使用这种方式调用:
[HttpGet("GetOrder/{Object_ID}")]
public Order GetOrder (int id)
{
string Baseurl = "http://189.29.0.100/";
…..
using (var client = new HttpClient())
{
//Passing service base url
client.BaseAddress = new Uri(Baseurl);
client.DefaultRequestHeaders.Clear();
//Define request data format
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//Sending request to find web api REST service resource GetAllEmployees using HttpClient
borrowerData = await client.GetStringAsync("api/order/" + Id.ToString());
}
…
}
我在 Composed 文件中使用修复 IP 如下:
orderservice:
environment:
- ASPNETCORE_ENVIRONMENT=Development
ports:
- "80"
networks:
default:
ipv4_address: 189.29.0.100
问题是当我们在VM中部署这个项目时,如何让它与这些Ips一起工作?
请您参考如下方法:
Docker compose 在您的主机上创建一个虚拟网络,服务无法通过这些 IP 从 docker 外部路由。但在虚拟网络内部,所有服务都可以通过它们的名称(http://otherservice/)相互访问。 如果你想访问 VM 上所有已部署的微服务,你需要在你的 docker compose 中使用反向代理。例如,将请求分派(dispatch)给其他服务的 nginx 服务。
