首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grpc服务器不工作在坞-组合

grpc服务器不工作在坞-组合
EN

Stack Overflow用户
提问于 2020-09-27 21:36:37
回答 2查看 2.5K关注 0票数 4

我用grpc server.in vs构建了样例项目,一切都很好,我的项目做得很好。dokcer-compose.yaml .dokcer是:

代码语言:javascript
复制
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 (使用http的grpc服务器)

当docker-组合并调用api时,找不到故障d和grpc服务器,等等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-28 04:54:11

必须在CreateHostBuilder Grpc服务器中将program.cs更改为此代码

代码语言:javascript
复制
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服务器端口)

票数 6
EN

Stack Overflow用户

发布于 2020-09-28 16:57:42

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

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

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

备注与Docker文件(及其网络)一起使用,服务器将绑定到您运行的任何端口,如5003ports: - "XXXX:5003"是多余的*除非您希望在端口XXXX.

上可用时,从主机( Docker撰写网络之外)访问该服务。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64093550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档