我试图连接到我的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中启动。
1条答案
按热度按时间fzwojiic1#
正如我在注解中指出的,问题是在不同的网络上运行服务。一个可能的解决方案是手动创建网络
然后在两个Docker-compose文件中设置默认外部网络
如需更多信息:https://docs.docker.com/compose/compose-file/#networks-top-level-element