连接到grpc端点时Docker容器中的资源暂时不可用

c0vxltue  于 2022-11-22  发布在  Docker
关注(0)|答案(1)|浏览(147)

我试图连接到我的grpc服务在一个docker容器,但当我的代码运行连接,它给出了一个资源暂时不可用的错误。
为开发容器编写Docker-compose。我使用以下代码启动此程序:嵌入-组合-f .开发容器/嵌入-组合.yml向上

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

用于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"

用于连接到my-app(grpc服务)的C#代码

using var channel = GrpcChannel.ForAddress(
                "http://my-app:3000",
                channelOptions: new GrpcChannelOptions() {
                    Credentials = Grpc.Core.ChannelCredentials.Insecure
                });

当我使用localhost:3000在visual studio本地运行测试时,它运行得很好。我使用docker-composite up命令启动了所有的东西。一旦我尝试使用我的grpc通道,我得到的资源暂时不可用,但我确实看到服务在docker中启动。

fzwojiic

fzwojiic1#

正如我在注解中指出的,问题是在不同的网络上运行服务。一个可能的解决方案是手动创建网络

docker network create my-network

然后在两个Docker-compose文件中设置默认外部网络

networks:
  default:
    external: true
    name: my-network

如需更多信息:https://docs.docker.com/compose/compose-file/#networks-top-level-element

相关问题