diff --git a/scripts/server/deploy-docker-image.sh b/scripts/server/deploy-docker-image.sh index 4f613c3f..f25aab4b 100755 --- a/scripts/server/deploy-docker-image.sh +++ b/scripts/server/deploy-docker-image.sh @@ -68,19 +68,20 @@ prune_project_images() { echo "=== prune local project images: keep $retain_count for $tag_prefix ===" - docker image ls "$image_repo" \ - --format '{{.Repository}}:{{.Tag}} {{.CreatedAt}}' \ + if [ "$retain_count" -eq 1 ]; then + docker image ls "$image_repo" --format '{{.Repository}}:{{.Tag}} {{.ID}}' \ + | awk -v prefix="$tag_prefix" -v current="$IMAGE" \ + '$1 ~ ":" prefix && $1 !~ /-latest$/ && $1 != current { print $1 }' \ + | xargs -r docker rmi || true + return 0 + fi + + docker image ls "$image_repo" --format '{{.Repository}}:{{.Tag}} {{.CreatedAt}}' \ | awk -v prefix="$tag_prefix" '$1 ~ ":" prefix && $1 !~ /-latest$/ { print }' \ | sort -k2,3r \ - | awk -v keep="$retain_count" 'NR > keep { print $1 }' \ - | while IFS= read -r old_image; do - [ -n "$old_image" ] || continue - if [ "$old_image" = "$IMAGE" ]; then - continue - fi - echo "Removing local image: $old_image" - docker image rm "$old_image" || true - done + | awk -v keep="$retain_count" -v current="$IMAGE" \ + 'NR > keep && $1 != current { print $1 }' \ + | xargs -r docker rmi || true } prune_project_images "$SERVER_RETAIN_COUNT"