![](/img/trans.png)
[英].net core docker centos HttpRequest error: (Socket Exception) Resource temporarily unavailable
[英]Resource temporarily unavailable in Docker container when connecting to grpc endpoint
我正在尝试连接到 docker 容器中的 grpc 服务,但是当我的代码运行连接时,它会发出资源暂时不可用错误。
Docker-compose 用于开发容器。 我使用以下方法启动它: docker-compose -f.devcontainer/docker-compose.yml up
version: "3.8"
services:
app:
build:
context: .
dockerfile: Dockerfile
args:
# Update 'VARIANT' to pick a version of .NET: 3.1, 5.0, 6.0
VARIANT: "6.0"
# Optional version of Node.js
NODE_VERSION: "lts/*"
image: company/devcontainer:latest
environment:
- UNIT_TESTS=/workspace/test
- ACCEPTANCE=/workspace/acceptance
- DOCKER_HOSTNAME=host.docker.internal
# Attaches Host Docker Daemon to devcontainer and directories
volumes:
- ..:/workspace:cached
- /var/run/docker.sock:/var/run/docker.sock
Docker-compose grpc服务
version: "3.8"
services:
my-app:
image: ${MY_APP_IMAGE_NAME:-company/my-app}
restart: on-failure
ports:
- '3000:3000'
extra_hosts:
- "host.docker.internal:host-gateway"
C# 连接到 my-app 的代码,这是一个 grpc 服务
using var channel = GrpcChannel.ForAddress(
"http://my-app:3000",
channelOptions: new GrpcChannelOptions() {
Credentials = Grpc.Core.ChannelCredentials.Insecure
});
当我使用 localhost:3000 使用 visual studio 在本地运行测试时,它工作正常。 我使用 docker-compose up 命令启动所有内容。 一旦我尝试使用我的 grpc 通道,我得到的资源暂时不可用,但我确实看到该服务在 docker 内启动。
正如我在评论中指出的那样,问题在于在不同的网络上运行服务。 一种可能的解决方案是手动创建一个.network
docker network create my-network
然后在两个docker-compose文件中设置默认的external.network
networks:
default:
external: true
name: my-network
更多信息: https://docs.docker.com/compose/compose-file/.networks-top-level-element
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.