事务后钩子增加对冗余镜像的清理
This commit is contained in:
@@ -633,6 +633,7 @@ do_deploy() {
|
|||||||
print_warn "数据库为空或不可用,请通过 WebUI 注册管理员账户"
|
print_warn "数据库为空或不可用,请通过 WebUI 注册管理员账户"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ----- 验证版本写入 -----
|
||||||
# ----- 验证版本写入 -----
|
# ----- 验证版本写入 -----
|
||||||
print_step "验证版本..."
|
print_step "验证版本..."
|
||||||
sleep 1
|
sleep 1
|
||||||
@@ -651,6 +652,37 @@ do_deploy() {
|
|||||||
echo " 如需回退,请恢复: cp -r $BACKUP_DIR/frpc-console/* $DEPLOY_DIR/"
|
echo " 如需回退,请恢复: cp -r $BACKUP_DIR/frpc-console/* $DEPLOY_DIR/"
|
||||||
fi
|
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 "清理临时文件..."
|
print_step "清理临时文件..."
|
||||||
rm -rf "$WORK_DIR"
|
rm -rf "$WORK_DIR"
|
||||||
|
|||||||
Reference in New Issue
Block a user