You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计docker-compose.yml文件中定义的服务总数量

获取docker-compose.yml定义的服务总数量的方法

方法1:使用docker-compose原生命令统计(优先推荐)

执行以下命令即可直接得到准确的总服务数:
docker-compose -f {docker-compose.yml路径} config --services | wc -l

  • 命令逻辑:docker-compose config --services会完整解析你的配置文件(自动处理变量替换、多文件合并、继承等规则),逐行输出所有实际生效的服务名,再通过wc -l统计行数就是总服务数,不会受到yaml注释、缩进、格式问题的干扰。

方法2:直接解析yaml文件统计(需提前安装yq工具)

如果不想依赖docker-compose命令,可以用yq工具直接读取配置文件统计:
yq e '.services | keys | length' {docker-compose.yml路径}

  • 注意:如果你的配置使用了多文件合并、锚点引用、extends继承其他文件服务的场景,该方法统计的结果可能和实际启动的服务列表不一致,仅适合单文件无特殊配置的场景使用。

更准确的服务存活校验方案

你之前使用的docker ps | wc -l统计运行中服务数的方式存在误差,会包含docker ps输出的表头、其他项目启动的运行中容器,建议使用同口径的docker-compose命令统计运行中服务数,完整校验脚本如下:

# 替换为你的docker-compose.yml实际路径
COMPOSE_PATH="./docker-compose.yml"

# 统计配置中定义的总服务数
TOTAL=$(docker-compose -f "$COMPOSE_PATH" config --services | wc -l | tr -d '[:space:]')
# 统计当前compose对应正在运行的服务数
RUNNING=$(docker-compose -f "$COMPOSE_PATH" ps --services --filter "status=running" | wc -l | tr -d '[:space:]')

if [ "$TOTAL" -eq "$RUNNING" ]; then
  echo "校验通过:所有$TOTAL个服务均正常运行"
  exit 0
else
  echo "校验失败:共$TOTAL个服务,仅$RUNNING个正在运行"
  exit 1
fi

内容的提问来源于stack exchange,提问作者Abhay Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:48:02