Skip to main content
 首页 » 编程设计

c#之从 Docker 中的另一个微服务调用微服务

2024年02月27日17shangdawei

我在 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 服务。