mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2025-12-13 09:56:01 +00:00
scripts: adapted new docker image names to docker_garbage function + removed dup
This commit is contained in:
@@ -10,46 +10,6 @@ echo "If this script is run automatically by cron or a timer AND you are using b
|
|||||||
echo "The snapshots of your backup destination should run AFTER the cold standby script finished to ensure consistent snapshots."
|
echo "The snapshots of your backup destination should run AFTER the cold standby script finished to ensure consistent snapshots."
|
||||||
echo
|
echo
|
||||||
|
|
||||||
function docker_garbage() {
|
|
||||||
IMGS_TO_DELETE=()
|
|
||||||
|
|
||||||
for container in $(grep -oP "image: \Kmailcow.+" docker-compose.yml); do
|
|
||||||
|
|
||||||
REPOSITORY=${container/:*}
|
|
||||||
TAG=${container/*:}
|
|
||||||
V_MAIN=${container/*.}
|
|
||||||
V_SUB=${container/*.}
|
|
||||||
EXISTING_TAGS=$(docker images | grep ${REPOSITORY} | awk '{ print $2 }')
|
|
||||||
|
|
||||||
for existing_tag in ${EXISTING_TAGS[@]}; do
|
|
||||||
|
|
||||||
V_MAIN_EXISTING=${existing_tag/*.}
|
|
||||||
V_SUB_EXISTING=${existing_tag/*.}
|
|
||||||
|
|
||||||
# Not an integer
|
|
||||||
[[ ! ${V_MAIN_EXISTING} =~ ^[0-9]+$ ]] && continue
|
|
||||||
[[ ! ${V_SUB_EXISTING} =~ ^[0-9]+$ ]] && continue
|
|
||||||
|
|
||||||
if [[ ${V_MAIN_EXISTING} == "latest" ]]; then
|
|
||||||
echo "Found deprecated label \"latest\" for repository ${REPOSITORY}, it should be deleted."
|
|
||||||
IMGS_TO_DELETE+=(${REPOSITORY}:${existing_tag})
|
|
||||||
elif [[ ${V_MAIN_EXISTING} -lt ${V_MAIN} ]]; then
|
|
||||||
echo "Found tag ${existing_tag} for ${REPOSITORY}, which is older than the current tag ${TAG} and should be deleted."
|
|
||||||
IMGS_TO_DELETE+=(${REPOSITORY}:${existing_tag})
|
|
||||||
elif [[ ${V_SUB_EXISTING} -lt ${V_SUB} ]]; then
|
|
||||||
echo "Found tag ${existing_tag} for ${REPOSITORY}, which is older than the current tag ${TAG} and should be deleted."
|
|
||||||
IMGS_TO_DELETE+=(${REPOSITORY}:${existing_tag})
|
|
||||||
fi
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
if [[ ! -z ${IMGS_TO_DELETE[*]} ]]; then
|
|
||||||
docker rmi ${IMGS_TO_DELETE[*]}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function preflight_local_checks() {
|
function preflight_local_checks() {
|
||||||
if [[ -z "${REMOTE_SSH_KEY}" ]]; then
|
if [[ -z "${REMOTE_SSH_KEY}" ]]; then
|
||||||
>&2 echo -e "\e[31mREMOTE_SSH_KEY is not set\e[0m"
|
>&2 echo -e "\e[31mREMOTE_SSH_KEY is not set\e[0m"
|
||||||
|
|||||||
16
update.sh
16
update.sh
@@ -36,13 +36,23 @@ docker_garbage() {
|
|||||||
IMGS_TO_DELETE=()
|
IMGS_TO_DELETE=()
|
||||||
|
|
||||||
declare -A IMAGES_INFO
|
declare -A IMAGES_INFO
|
||||||
COMPOSE_IMAGES=($(grep -oP "image: \Kmailcow.+" "${SCRIPT_DIR}/docker-compose.yml"))
|
# Erfasse alle in docker-compose verwendeten Images (sowohl mailcow/... als auch ghcr.io/mailcow/...)
|
||||||
|
COMPOSE_IMAGES=($(grep -oP "image: \K(ghcr\.io/)?mailcow.+" "${SCRIPT_DIR}/docker-compose.yml"))
|
||||||
|
|
||||||
for existing_image in $(docker images --format "{{.ID}}:{{.Repository}}:{{.Tag}}" | grep 'mailcow/'); do
|
# Durchlaufe alle vorhandenen Images, die mailcow/ oder ghcr.io/mailcow/ beinhalten
|
||||||
|
for existing_image in $(docker images --format "{{.ID}}:{{.Repository}}:{{.Tag}}" | grep -E '(mailcow/|ghcr\.io/mailcow/)'); do
|
||||||
ID=$(echo "$existing_image" | cut -d ':' -f 1)
|
ID=$(echo "$existing_image" | cut -d ':' -f 1)
|
||||||
REPOSITORY=$(echo "$existing_image" | cut -d ':' -f 2)
|
REPOSITORY=$(echo "$existing_image" | cut -d ':' -f 2)
|
||||||
TAG=$(echo "$existing_image" | cut -d ':' -f 3)
|
TAG=$(echo "$existing_image" | cut -d ':' -f 3)
|
||||||
|
|
||||||
|
# Für das Image mailcow/backup: nur löschen, wenn es untagged ist (TAG gleich "<none>")
|
||||||
|
if [[ "$REPOSITORY" == "mailcow/backup" || "$REPOSITORY" == "ghcr.io/mailcow/backup" ]]; then
|
||||||
|
if [[ "$TAG" != "<none>" ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Überspringe Images, die in der docker-compose.yml verwendet werden
|
||||||
if [[ " ${COMPOSE_IMAGES[@]} " =~ " ${REPOSITORY}:${TAG} " ]]; then
|
if [[ " ${COMPOSE_IMAGES[@]} " =~ " ${REPOSITORY}:${TAG} " ]]; then
|
||||||
continue
|
continue
|
||||||
else
|
else
|
||||||
@@ -57,7 +67,7 @@ docker_garbage() {
|
|||||||
echo " ${IMAGES_INFO[$id]} ($id)"
|
echo " ${IMAGES_INFO[$id]} ($id)"
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ ! $FORCE ]; then
|
if [ -z "$FORCE" ]; then
|
||||||
read -r -p "Do you want to delete them to free up some space? [y/N] " response
|
read -r -p "Do you want to delete them to free up some space? [y/N] " response
|
||||||
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
|
||||||
docker rmi ${IMGS_TO_DELETE[*]}
|
docker rmi ${IMGS_TO_DELETE[*]}
|
||||||
|
|||||||
Reference in New Issue
Block a user