从Docker容器连接到主机Cosmos模拟器



我有一个。net应用程序运行在一个docker容器通过docker撰写。我使用的是Windows机器,Docker Desktop运行Linux容器。

应用程序连接到Cosmos实例。帐户密钥默认设置为模拟器密钥。

下面是来自docker- composer .yml的部分

customerapi:
container_name: mycustomerapi
image: acr.io/customer-api:master
ports:
- "20102:80"
environment:
- ASPNETCORE_ENVIRONMENT=Development
- CosmosOptions__Endpoint=${endpoint}
- CosmosOptions__DisableSsl=true

如果我覆盖帐户密钥和端点,我可以让应用程序使用托管在Azure中的真实实例连接,但我不能让它连接到运行在主机上的模拟器。

我已经尝试设置${endpoint}

  • https://host.docker.internal: 8081/大约5分钟后失败,错误为System.Net.Http.HttpRequestException: Connection refused (127.0.0.1:8081).
  • https://192.168.10.110:8081这是我本地的IP地址。它失败得更快(大约10秒),错误与上面相同。

我也尝试使用network_mode: host与两个端点。

  • https://host.docker.internal: 8081/失败,错误与上面相同。
  • https://192.168.10.110:8081大约10秒后失败,错误为System.Net.Http.HttpRequestException: No route to host (192.168.10.110:8081)

我需要运行CosmosAllowNetworkAccess

这个答案显示了如何使用/AllowNetworkAccess启动仿真器论点。
局域网上的Azure Cosmos DB模拟器
一旦运行,我就可以使用https://host.docker.internal:8081/容器突然活了起来!

最新更新