【问题标题】:grpc server not working in docker-composegrpc 服务器在 docker-compose 中不工作
【发布时间】:2020-09-27 21:36:37
【问题描述】:

我使用 grpc server.in 构建示例项目,一切正常,我的项目运行良好。 dokcer-compose.yaml 是:

version: '3.3' 
services:
  grpcService:
    container_name: grpcserver
    image:  grpcImage
    ports:
      - "5003:5003"  //client
      - "5001:5001"  //grpc server
    restart: always

在项目中我为 grpc 服务器设置了http://127.0.0.1:5001

并为客户端设置http://127.0.0.1:5003 我处理(grpc 服务器使用 http)

当 docker-compose up 并调用 api 时,get failed 和 grpc server not found 等

【问题讨论】:

    标签: asp.net-core grpc


    【解决方案1】:

    您必须在 program.cs Grpc Server 中将 CreateHostBuilder 更改为此代码

    public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>().ConfigureKestrel(options =>
                    {
                        options.Listen(IPAddress.Any, 5001, listenOptions =>
                        {
                            listenOptions.Protocols = HttpProtocols.Http2;
                        });
                    });
                });
    }
    

    5001 是 grpc 服务器端口。(将此端口更改为您的 grpc 服务器端口)

    【讨论】:

      【解决方案2】:

      您的问题并不完全清楚您的客户端和服务器是如何分开的;我通常希望在 Docker Compose 文件中看到 2 个服务:一个用于服务器,另一个用于客户端。

      很可能 (!) 您的客户端无法连接到服务器,因为您使用的是环回 (127.0.0.1) 地址。环回是一种在可能不使用机器网络堆栈的机器内路由流量的短路方式。因此,环回流量不会暴露在容器之外,因此您的客户端无法访问。

      最好在运行(!)服务器时使用0.0.0.0作为服务器的地址,这样服务器将绑定到网络堆栈,并且可以被主机和其他服务(容器)使用。在您的 Docker Compose 文件中,该服务的 DNS 名称将是 grpcService(可能只有小写字母!?),并且可以从在 Docker Compose 文件(网络)中运行的另一个服务以 grpcservice:5003 访问。

      注意 使用 Docker Compose 文件(及其网络),服务器将绑定到您运行它的任何端口,例如5003ports: - "XXXX:5003" 是多余的 *除非当它在端口 XXXX 上可用时,您希望从主机(Docker Compose 网络之外)访问此服务。

      【讨论】:

      • 谢谢,我第一次检查 0.0.0.0 但运行 docker 容器时看不到我的 api,在 127.0.0.1 中我可以看到 api 但无法连接到 grpc
      • 哇,0.0.0.0 为我工作。我没有看到那个来。谢谢!
      猜你喜欢
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 2016-02-07
      • 2019-06-09
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多