#!/bin/bash ## This block checks all loaded (running or stopped) containers for nas-dependent mounts and adds them (by container name) to the NAS_DEPENDENTS variable. # NAS_DEPENDENTS="" # for CONTAINER_ID in $(docker ps -aq) # get list of all loaded containers (running and stopped) # do # CONTAINER_NAME=$(docker ps -aq --filter "id=$CONTAINER_ID" --format '{{.Names}}') # get the container's name # CONTAINER_MOUNTS=$(docker inspect --format '{{range .Mounts}}{{println .Source}}{{end}}' $CONTAINER_ID) # print the container's volume mounts # echo "$CONTAINER_MOUNTS" | grep -q /mnt/nas # MATCH=$? # if [ $MATCH == 0 ]; then # NAS_DEPENDENTS+="$CONTAINER_NAME\n" # fi # done ## ## This block checks all projects within the ~/homelab/server/config directory for NAS-dependence NAS_DEPENDENTS="" for project in $(find ~/homelab/server/config -maxdepth 1 -mindepth 1 -path ~/homelab/server/config/minecraft -prune -o -print | cut -d "/" -f7) do echo "======== CHECKING $project ========" cd ~/homelab/server/config/$project docker-compose config | grep -q /mnt/nas MATCH=$? if [ $MATCH == 0 ]; then NAS_DEPENDENTS+="$project\n" fi done echo -e "$NAS_DEPENDENTS" ## This block runs docker-compose down for ## all projects found by the previous block for project in $(echo -e "$NAS_DEPENDENTS") do echo "======== SHUTTING DOWN $project ========" cd ~/homelab/server/config/$project docker-compose up -d done