diff --git a/delete.sh b/delete.sh new file mode 100644 index 0000000..83267e4 --- /dev/null +++ b/delete.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +ENV_FILE="./.env" + +declare -A IMAGE_VERSION_MAP +while IFS='=' read -r key value; do + if [[ $key == *_IMAGE && $value == maxgauge/exemone-* ]]; then + image_key=${key%_IMAGE} + IMAGE=${value} + elif [[ $key == *_VERSION && -n $IMAGE && ${key%_VERSION} == $image_key ]]; then + IMAGE_VERSION_MAP[$IMAGE]=$value + IMAGE="" + fi +done < "$ENV_FILE" + +docker images --format '{{.Repository}}:{{.Tag}} {{.ID}}' | while read -r line; do + IMAGE_TAG=$(echo "$line" | awk '{print $1}') + IMAGE_ID=$(echo "$line" | awk '{print $2}') + + REPOSITORY=$(echo "$IMAGE_TAG" | cut -d: -f1) + TAG=$(echo "$IMAGE_TAG" | cut -d: -f2) + + if [[ $REPOSITORY == maxgauge/exemone-* ]]; then + EXPECTED_TAG=${IMAGE_VERSION_MAP[$REPOSITORY]} + if [[ -n $EXPECTED_TAG && $TAG != $EXPECTED_TAG ]]; then + echo "Deleting $IMAGE_TAG (ID: $IMAGE_ID)" + docker rmi "$IMAGE_ID" + fi + fi +done \ No newline at end of file