我试图通过docker-compose为CosmosDB模拟器运行一个linux容器,但我无法连接到它。
我有以下的docker-compose文件:
version: '3.4'
services:
local-cosmosdb:
image: "mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:mongodb"
container_name: local.cosmosdb
tty: true
restart: always
environment:
- AZURE_COSMOS_EMULATOR_PARTITION_COUNT=10
- AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE=true
ports:
- 8081:8081
- 10250:10250
- 10251:10251
- 10252:10252
- 10253:10253
- 10254:10254
- 10255:10255
当我启动容器时,控制台显示所有分区都成功启动了,并且正在运行。通过使用telnet,我还确认了 * 有 * 一些进程正在监听localhost上的端口,如10250和8081。但是,我无法使用连接字符串mongodb://localhost:8081
连接到DB(MongoDB使用相同的字符串,但在端口27017上,我假设cosmos中有一个等价的字符串)。
我也试过:
1.使用暴露的任何其它端口(包括10250和10255)
1.尝试模拟器的不同标记
1.使用容器名称而不是本地主机与各种端口组合(例如mongodb://local.cosmosdb:8081
)
有关于通过连接字符串直接连接到Azure Cosmos DB的文档,但我找不到任何关于连接到Cosmos DB模拟器 * 在Docker compose上运行 * 的资源...我能找到的最好的是:CosmosDb Emulator with docker-compose,这并没有真正回答我的问题。我还遇到了这个问题:How to start CosmosDB emulator with docker-compose?,但它不包括获取实际的连接字符串。
任何帮助这将是非常感谢!
1条答案
按热度按时间l2osamch1#
就像我在评论中提到的,微软似乎在急于修复the license issue时做了一些事情来破坏MongoDB API模拟器。
在更改之前,要通过MongoDB客户端连接到模拟器,您需要做的只是fetch the emulator certificate,然后用它初始化客户端,例如在Java中: