#!/bin/bash set -e echo "🛠️ Detecting OS..." OS=$(uname -s) is_wsl() { grep -qi microsoft /proc/version 2>/dev/null } install_docker_linux() { echo "🔧 Installing Docker on Linux..." # Remove old versions sudo apt-get remove -y docker docker-engine docker.io containerd runc || true # Install required tools echo "📦 Installing dependencies..." sudo apt-get update sudo apt-get install -y \ ca-certificates \ curl \ gnupg \ lsb-release \ apt-transport-https # Ensure folders exist sudo mkdir -p /etc/apt/keyrings /etc/apt/sources.list.d # Add Docker GPG key echo "🔑 Adding Docker GPG key..." curl -fsSL https://download.docker.com/linux/$(. /etc/os-release && echo "$ID")/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # Add Docker repository echo "📄 Adding Docker repository..." echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/$(. /etc/os-release && echo "$ID") \ $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Install Docker echo "📦 Installing Docker Engine & Compose..." sudo apt-get update sudo apt-get install -y \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin if ! is_wsl; then echo "🔄 Enabling and starting Docker service..." sudo systemctl enable docker sudo systemctl start docker else echo "⚠️ Skipping systemctl steps (running in WSL)" fi echo "👥 Adding user '$USER' to docker group..." sudo usermod -aG docker "$USER" echo "✅ Docker installed successfully!" echo "" if is_wsl; then echo "🔁 Please restart your WSL session: run 'wsl --shutdown' in PowerShell or close your terminal." else echo "🔁 Please log out and log back in for the docker group to take effect." fi } install_docker_windows_message() { echo "🪟 Detected Windows system." echo "👉 Please install Docker Desktop from: https://www.docker.com/products/docker-desktop/" echo "It includes Docker Engine + Compose and integrates with WSL2." echo "" echo "Make sure to:" echo " - Enable WSL2 backend during install" echo " - Share your drives if needed (for volume mounting)" } case "$OS" in Linux) install_docker_linux ;; Darwin) echo "🍏 macOS detected. Please use Docker Desktop: https://www.docker.com/products/docker-desktop" ;; MINGW*|CYGWIN*|MSYS*|Windows_NT) install_docker_windows_message ;; *) echo "❌ Unsupported OS: $OS" exit 1 ;; esac