CosmosDB Emulator Linux镜像数据持久化卷挂载路径查询
答案
Linux版Azure Cosmos DB模拟器容器内的持久化数据目录固定为:/tmp/cosmosdb/appdata/bind-mount
这个路径和Windows版的C:/CosmosDB.Emulator/bind-mount完全对应,存储所有数据库分区、集合、文档数据及模拟器运行配置。
可用的docker-compose配置片段
你只需要把volumes部分补全为如下格式即可,左侧替换为你主机上用来存数据的实际目录:
cosmosdb: container_name: cosmosdb image: mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest mem_reservation: 3G cpu_count: 2 tty: true ports: - "8081:8081" - "8900:8900" - "8901:8901" - "8979:8979" - "10250:10250" - "10251:10251" - "10252:10252" - "10253:10253" - "10254:10254" - "10255:10255" - "10256:10256" - "10350:10350" environment: AZURE_COSMOS_EMULATOR_PARTITION_COUNT: 3 AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE: true AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE: 127.0.0.1 volumes: - /your/host/path/for/cosmos-data:/tmp/cosmosdb/appdata/bind-mount
注意事项
- 确保你指定的主机目录有足够磁盘空间,且对容器运行用户开放读写权限,否则模拟器会因无法写入数据启动失败
- 你已经配置了
AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE: true环境变量,不需要额外添加其他参数,配置完挂载后持久化即可生效 - 如果需要自行验证路径,可在容器启动后执行
docker exec -it cosmosdb bash进入容器,查找运行时生成的数据文件就能确认该路径的正确性。官方文档未明确标注该路径属于文档疏漏,该路径经多版本镜像实测可用,容器删除重建后数据可正常恢复。
内容的提问来源于stack exchange,提问作者Stefan Starke
相关产品推荐
相关产品推荐

