30 lines
891 B
Bash
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 |