#!/bin/bash # --- CONFIGURATION --- # Add the paths to the directories containing your docker-compose.yml files # Example: SERVICES=("/home/user/homeassistant" "/home/user/nginx") SERVICES=( "/root/" ) # Color codes for better readability GREEN='\033[0;32m' RED='\033[0;31m' NC='\033[0m' # No Color echo "Starting Docker services update..." for dir in "${SERVICES[@]}"; do if [ -d "$dir" ] && [ -f "$dir/docker-compose.yml" ]; then echo -e "\nUpdating service in: ${GREEN}$dir${NC}" # Move into the directory cd "$dir" || continue # 1. Pull the latest images if docker compose pull; then echo "Images pulled successfully." # 2. Recreate containers with the new images # --detach: runs in background # --remove-orphans: cleans up old services no longer in the file if docker compose up -d --remove-orphans; then echo -e "${GREEN}Successfully updated!${NC}" else echo -e "${RED}Failed to restart containers.${NC}" fi else echo -e "${RED}Failed to pull images. Skipping this service.${NC}" fi else echo -e "\n${RED}Error:${NC} Directory or docker-compose.yml not found at $dir" fi done # 3. Cleanup echo -e "\nCleaning up unused images..." docker image prune -f echo -e "\n${GREEN}All updates complete!${NC}"