事务后钩子增加对冗余镜像的清理

This commit is contained in:
2026-07-29 23:48:06 +08:00
parent 8a5a541bc6
commit 8657d95402
+32
View File
@@ -633,6 +633,7 @@ do_deploy() {
print_warn "数据库为空或不可用,请通过 WebUI 注册管理员账户"
fi
# ----- 验证版本写入 -----
# ----- 验证版本写入 -----
print_step "验证版本..."
sleep 1
@@ -651,6 +652,37 @@ do_deploy() {
echo " 如需回退,请恢复: cp -r $BACKUP_DIR/frpc-console/* $DEPLOY_DIR/"
fi
# ----- 事务后钩子:清理旧镜像 -----
print_step "清理旧镜像..."
# 保留最近 3 个镜像(包括刚构建的)
KEEP_COUNT=3
CURRENT_IMAGE_ID=$(docker images -q "${IMAGE_NAME}:${IMAGE_TAG}" 2>/dev/null)
if [ -n "$CURRENT_IMAGE_ID" ]; then
ALL_IMAGES=$(docker images "${IMAGE_NAME}:*" --format "{{.ID}} {{.CreatedAt}}" 2>/dev/null | sort -k2 -r | awk '{print $1}')
COUNTER=0
TO_DELETE=""
for IMG_ID in $ALL_IMAGES; do
if [ "$IMG_ID" = "$CURRENT_IMAGE_ID" ]; then
continue
fi
COUNTER=$((COUNTER + 1))
if [ $COUNTER -le $KEEP_COUNT ]; then
continue
fi
TO_DELETE="$TO_DELETE $IMG_ID"
done
if [ -n "$TO_DELETE" ]; then
docker rmi -f $TO_DELETE 2>/dev/null || true
print_info "已清理旧镜像"
else
print_info "无需清理,镜像数量未超过保留策略"
fi
else
print_warn "无法获取当前镜像 ID,跳过清理"
fi
# ----- 清理临时文件 -----
print_step "清理临时文件..."
rm -rf "$WORK_DIR"