事务后钩子增加对冗余镜像的清理
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user