docker-compose + shell脚本扩缩容

单机部署docker镜像的话可以用这种方式。比如几分钟运行一次脚本,高峰期可以处理一下

#!/bin/bash
SERVICE=web  # 你启动的docker ps后的名字
MAX_REPLICAS=5 
MIN_REPLICAS=1
THRESHOLD=80  # 80% CPU

# 获取所有 web 服务容器的 CPU 使用率
CPU=$(docker stats --no-stream --format "{{.Name}} {{.CPUPerc}}" | grep $SERVICE | awk '{print $2}' | sed 's/%//' | awk '{sum+=$1} END {print (NR==0)?0:sum/NR}')

# 获取当前副本数
REPLICAS=$(docker-compose ps | grep $SERVICE | wc -l)

if (( $(echo "$CPU > $THRESHOLD" | bc -l) )) && [ $REPLICAS -lt $MAX_REPLICAS ]; then
    docker-compose up -d --scale $SERVICE=$(($REPLICAS+1))
elif (( $(echo "$CPU < 30" | bc -l) )) && [ $REPLICAS -gt $MIN_REPLICAS ]; then
    docker-compose up -d --scale $SERVICE=$(($REPLICAS-1))
fi
posted @ 2025-07-18 09:42  朝阳1  阅读(8)  评论(0)    收藏  举报