From 7f03addd9c17b161976c7d10e9fc79be8b611b05 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 6 Jan 2026 22:56:45 +0000 Subject: [PATCH] Improve migration to detect Docker on mounted drives - Auto-detect ~/drives/*/docker, /mnt/*/docker, /media/*/docker - Show numbered list for easy selection (type "1" to select first) - Still accepts any custom path - Shows common locations as examples if nothing auto-detected --- ubuntu-post-install.sh | 52 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/ubuntu-post-install.sh b/ubuntu-post-install.sh index f71356c..47cfebb 100644 --- a/ubuntu-post-install.sh +++ b/ubuntu-post-install.sh @@ -528,31 +528,63 @@ run_migration() { echo "Step 1: Locate existing containers" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" echo "" - echo "Common Docker directory locations:" - echo " • /var/docker" - echo " • ~/docker" - echo " • /opt/docker" - echo " • /home/*/docker" - echo "" - # Try to auto-detect + # Try to auto-detect Docker directories DETECTED_DIRS=() + + # Check common locations for check_dir in /var/docker /opt/docker "$HOME/docker" /home/*/docker; do if [ -d "$check_dir" ] && [ "$(find "$check_dir" -maxdepth 2 -name 'docker-compose.yml' -o -name 'compose.yml' 2>/dev/null | head -1)" ]; then DETECTED_DIRS+=("$check_dir") fi done + # Check mounted drives: ~/drives/*, /mnt/*, /media/* + for mount_base in "$HOME/drives" "$HOME_DIR/drives" /mnt /media; do + if [ -d "$mount_base" ]; then + for mount_dir in "$mount_base"/*; do + if [ -d "$mount_dir/docker" ]; then + check_dir="$mount_dir/docker" + if [ "$(find "$check_dir" -maxdepth 2 -name 'docker-compose.yml' -o -name 'compose.yml' 2>/dev/null | head -1)" ]; then + DETECTED_DIRS+=("$check_dir") + fi + fi + done + fi + done + if [ ${#DETECTED_DIRS[@]} -gt 0 ]; then echo "Auto-detected Docker directories:" - for dir in "${DETECTED_DIRS[@]}"; do + for i in "${!DETECTED_DIRS[@]}"; do + dir="${DETECTED_DIRS[$i]}" count=$(find "$dir" -maxdepth 2 \( -name 'docker-compose.yml' -o -name 'compose.yml' \) 2>/dev/null | wc -l) - echo " • $dir ($count containers)" + echo " [$((i+1))] $dir ($count containers)" done echo "" + echo "Enter a number to select, or type a custom path:" + else + echo "No Docker directories auto-detected." + echo "" + echo "Common locations:" + echo " • ~/docker" + echo " • ~/drives/primary/docker" + echo " • /var/docker" + echo " • /opt/docker" + echo " • /mnt/data/docker" + echo "" + echo "Enter the full path to your Docker directory:" fi + echo "" + read -p "Source directory: " SOURCE_DOCKER_DIR - read -p "Enter source Docker directory: " SOURCE_DOCKER_DIR + # Check if user entered a number (to select from detected list) + if [[ "$SOURCE_DOCKER_DIR" =~ ^[0-9]+$ ]] && [ ${#DETECTED_DIRS[@]} -gt 0 ]; then + idx=$((SOURCE_DOCKER_DIR - 1)) + if [ $idx -ge 0 ] && [ $idx -lt ${#DETECTED_DIRS[@]} ]; then + SOURCE_DOCKER_DIR="${DETECTED_DIRS[$idx]}" + echo "Selected: $SOURCE_DOCKER_DIR" + fi + fi # Expand ~ if used SOURCE_DOCKER_DIR="${SOURCE_DOCKER_DIR/#\~/$HOME}"