#!/bin/bash set -e # Configuration REGISTRY_DATA="/mnt/HC_Volume_104575103/registry-data/docker/registry/v2" KEEP_TAGS=3 echo "๐Ÿฅ Starting Aggressive Registry & Docker Maintenance..." # 1. Prune Registry Tags (Filesystem level) for repo_dir in "$REGISTRY_DATA/repositories/mintel/"*; do repo_name=$(basename "$repo_dir") tags_dir="$repo_dir/_manifests/tags" if [ -d "$tags_dir" ]; then echo "๐Ÿ” Processing repository: mintel/$repo_name" # Prune various tag patterns PATTERNS=("main-*" "testing-*" "branch-*" "v*" "rc*" "[0-9a-f]*") for pattern in "${PATTERNS[@]}"; do echo " ๐Ÿ“ฆ Pruning $pattern tags..." tags=$(ls -dt "$tags_dir"/${pattern} 2>/dev/null || true) count=0 for tag_path in $tags; do tag_name=$(basename "$tag_path") if [[ "$tag_name" == "latest" ]]; then continue; fi ((++count)) if [ $count -gt $KEEP_TAGS ]; then echo " ๐Ÿ—‘๏ธ Deleting old tag: $tag_name" rm -rf "$tag_path" fi done done # Always prune buildcache if [ -d "$tags_dir/buildcache" ]; then echo " ๐Ÿงน Deleting buildcache tag" rm -rf "$tags_dir/buildcache" fi fi done # 2. Run Garbage Collection echo "โ™ป๏ธ Running Registry Garbage Collection..." docker exec registry-registry-1 bin/registry garbage-collect /etc/docker/registry/config.yml --delete-untagged # 3. Prune Host Docker resources (Shorter window: 24h) echo "๐Ÿงน Pruning Host Docker resources..." docker system prune -af --filter "until=24h" docker volume prune -f echo "โœ… Maintenance complete!" df -h /