#!/bin/bash # Exit on error set -e # Optional: get the current logged-in user or pass one as argument TARGET_USER="${1:-$USER}" echo "🚀 Setting up Docker and Docker Compose for user: $TARGET_USER" # Update and upgrade system sudo apt update && sudo apt upgrade -y # Install required dependencies sudo apt install -y \ ca-certificates \ curl \ gnupg \ lsb-release # Add Docker’s official GPG key sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # Set up Docker repository echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Update again with Docker repo sudo apt update # Install latest Docker and Docker Compose v2 sudo apt install -y \ docker-ce \ docker-ce-cli \ containerd.io \ docker-buildx-plugin \ docker-compose-plugin # Add user to docker group (dynamically) sudo usermod -aG docker "$TARGET_USER" # Enable Docker on boot sudo systemctl enable docker # Success message echo -e "\n✅ Docker and Docker Compose installed successfully!" echo -e "👉 User '$TARGET_USER' added to the 'docker' group.\n" # Remind to reload group membership if [ "$USER" == "$TARGET_USER" ]; then echo "⚠️ You must log out and log back in OR run: newgrp docker" else echo "ℹ️ Make sure user '$TARGET_USER' logs out and back in or runs: newgrp docker" fi # Verify versions docker --version docker compose version