我把两个码头集装箱连接起来:一个包含CosmosDb模拟器映像容器,另一个包含我的函数应用程序。这两个容器都使用Docker Desktop在Linux中运行。
我需要能够从我的函数应用程序容器访问cosmosDb容器,结果发现这是个问题,我花了几天时间才解决,所以我把解决方案放在这里。
Microsoft指南没有解释如何执行此操作。它实际上是告诉您如何从本地计算机访问CosmosDb容器。https://learn.microsoft.com/en-us/azure/cosmos-db/docker-emulator-linux?tabs=sql-api%2Cssl-netstd21
cosmsdb仿真器使用的证书总是具有localhost域,并且不能将其配置为容器主机名:https://本地主机:8081/资源管理器/模拟器. pem
因此,如何从我的函数应用容器访问Cosmos容器?
2条答案
按热度按时间myzjeezk1#
我发现解决方案是使用固定的ip配置CosmosDb容器,然后我可以使用http://:8081访问CosmosDb示例。<ip_address>:8081.
这里的关键是给cosmos容器一个固定的ip(在我的例子中是www.example.com),你可以用它来获得上面的microsoft指南中的证书,然后你可以从你的应用程序中调用它,记住设置你的HOST_IP变量,这样你就可以从你的本地pc访问它。172.16.238.246) which you can use to get the cert as per the microsoft guide above. You can then call it from your application. Remember to set your HOST_IP variable so you can access it from your local pc.
Docker组成:
停靠文件:
6qftjkof2#
如果有帮助的话,我发现我可以在Docker编写文件中使用Azure Cosmos DB模拟器的服务名来引用它。
下面是一个例子:
然后,您可以使用服务的名称和端口号引用模拟器。下面是创建CosmosClient的示例。