无法连接到我的容器化 gRPC 服务器

我有一个具有给定文件夹结构的 git repo


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)

}

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


MMTTMM
浏览 111回答 1
1回答

慕的地10843

要从另一个容器访问在 docker 容器中运行的 gRPC,您必须使用 DNS 解析。grpc.Dial("dns:///grpc-server:9000", grpc.WithInsecure())您在其中grpc-server声明的容器名称在哪里container_name: grpc-server
打开App,查看更多内容
随时随地看视频慕课网APP