Files
exem-infra-shell/delete.sh
2025-01-03 11:58:56 +09:00

30 lines
891 B
Bash

#!/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