单机部署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