【问题标题】:Cannot connect to my containerized gRPC server无法连接到我的容器化 gRPC 服务器
【发布时间】:2022-01-06 04:42:12
【问题描述】:

我有一个具有给定文件夹结构的 git 存储库

grpc-repo
|---grpc-client (:8083)
|---grpc-server (:9000)
|---docker-compose.yml
|---Dockerfile
|---Dockerfile2

现在,这些 gRPC 客户端-服务器项目正在正常无缝运行。 但是,我需要对这个项目进行 docker 化。

下面是我的docker-compose.yml

version: "3.3"

services:
  client:
    container_name: grpc-client
    build:
      dockerfile: Dockerfile
      context: .
    volumes:
      - .:/app
    ports:
      - 8083:8083
    networks:
      - my-network
  server:
    container_name: grpc-server
    build:
      dockerfile: Dockerfile2
      context: .
    volumes:
      - .:/app
    ports:
      - 9000:9000
    networks:
      - my-network

networks:
  my-network:
    driver: bridge

将项目docker化后,我可以轻松连接到gRPC客户端..但是客户端无法连接到gRPC服务器。

上面写着……

rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial tcp :9000: connect: connection refused

这就是我在 golang 代码中创建与服务器的连接的方式

conn, err := grpc.Dial(":9000", grpc.WithInsecure())
if err != nil {
    log.Fatalf("could not connect: %s", err)
}

谁能帮我解决我在这里做错了什么? 提前致谢!

【问题讨论】:

    标签: go docker-compose grpc docker-networking


    【解决方案1】:

    要从另一个容器访问在 docker 容器中运行的 gRPC,您必须使用 DNS 解析。

    grpc.Dial("dns:///grpc-server:9000", grpc.WithInsecure())
    

    其中grpc-server 是您在container_name: grpc-server 中声明的容器名称

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 2017-10-10
      • 1970-01-01
      • 2019-07-12
      • 2023-02-11
      • 2023-02-10
      相关资源
      最近更新 更多