我有一個具有給定檔案夾結構的 git repo
grpc-repo
|---grpc-client (:8083)
|---grpc-server (:9000)
|---docker-compose.yml
|---Dockerfile
|---Dockerfile2
現在,這些 gRPC 客戶端-服務器專案無縫正常運行。但是,我需要對這個專案進行 dockerize。
下面給出的是我的 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
dockerizing 專案后,我可以輕松連接到 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)
}
誰能幫我解決我在這里做錯了什么?提前致謝 !
uj5u.com熱心網友回復:
要從另一個容器訪問在 docker 容器中運行的 gRPC,您必須使用 DNS 決議。
grpc.Dial("dns:///grpc-server:9000", grpc.WithInsecure())
您在其中grpc-server宣告的容器名稱在哪里container_name: grpc-server
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/369723.html
