Docker部署Azure Cosmos DB模拟器的健康检查方案咨询
Cosmos DB模拟器容器添加健康检查的方案
给你的Cosmos DB Linux模拟器容器配置健康检查,最直接有效的方式是利用模拟器自带的端点验证服务状态,结合你已经安装的curl工具来实现。下面是两种可行的配置方式:
方案一:在docker-compose.yml中添加(推荐)
直接在cosmosdb服务的配置里新增healthcheck字段,无需修改Dockerfile,灵活性更高:
cosmosdb: build: context: . dockerfile: Dockerfile.cosmosdb environment: - NODE_TLS_REJECT_UNAUTHORIZED=0 - AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=xxx.xxx.xxx.xxx 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" networks: my-network: ipv4_address: xxx.xxx.xxx.xxx healthcheck: test: ["CMD", "curl", "-f", "-k", "https://localhost:8081/_explorer/emulator.pem"] interval: 30s # 每隔30秒检查一次 timeout: 10s # 检查超时时间10秒 retries: 5 # 重试5次后判定不健康 start_period: 60s # 启动后60秒再开始检查(模拟器初始化较慢)
参数说明:
-k:忽略自签名证书的校验(Cosmos模拟器默认使用自签证书)-f:curl返回非200状态码时直接退出并返回失败,符合健康检查的失败判定逻辑start_period设为60秒是因为Linux版Cosmos模拟器启动初始化需要一定时间,避免误判
方案二:在Dockerfile中添加健康检查指令
如果希望把健康检查逻辑整合到镜像里,可以修改Dockerfile,在末尾添加HEALTHCHECK指令:
FROM mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator RUN apt update && apt upgrade -y RUN apt install curl -y HEALTHCHECK --interval=30s --timeout=10s --retries=5 --start-period=60s \ CMD curl -f -k https://localhost:8081/_explorer/emulator.pem CMD /usr/local/bin/cosmos/start.sh
注意事项:
两种方案都依赖你已经在Dockerfile中安装的curl工具,所以无需额外安装依赖。优先推荐方案一,因为可以在不重新构建镜像的前提下调整健康检查的参数(比如间隔、超时时间)。
内容的提问来源于stack exchange,提问作者Alan
相关产品推荐
相关产品推荐

