#!/bin/bash

# =============================================
# Docker Installation Script for Debian 12
# Just run: bash install_docker.sh
# =============================================

set -e  # Stop on any error

echo "================================================"
echo "   Docker Installation Script for Debian 12    "
echo "================================================"

# ── Step 1: Remove DVD/CDROM source ──────────────
echo ""
echo "► Step 1: Removing CDROM source..."
sed -i '/cdrom/d' /etc/apt/sources.list
echo "✅ CDROM source removed"

# ── Step 2: Remove old Docker installations ───────
echo ""
echo "► Step 2: Removing old Docker installations..."
apt remove -y docker docker-engine docker.io containerd runc 2>/dev/null || true
echo "✅ Old Docker removed"

# ── Step 3: Update apt ───────────────────────────
echo ""
echo "► Step 3: Updating apt..."
DEBIAN_FRONTEND=noninteractive apt update -qq
echo "✅ apt updated"

# ── Step 4: Install dependencies ─────────────────
echo ""
echo "► Step 4: Installing dependencies..."
DEBIAN_FRONTEND=noninteractive apt install -y -qq ca-certificates curl gnupg
echo "✅ Dependencies installed"

# ── Step 5: Add Docker GPG key ───────────────────
echo ""
echo "► Step 5: Adding Docker GPG key..."
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "✅ GPG key added"

# ── Step 6: Add Docker repository ────────────────
echo ""
echo "► Step 6: Adding Docker repository..."
. /etc/os-release
tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $VERSION_CODENAME
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
echo "✅ Docker repository added"

# ── Step 7: Update apt with Docker repo ──────────
echo ""
echo "► Step 7: Updating apt with Docker repo..."
DEBIAN_FRONTEND=noninteractive apt update -qq
echo "✅ apt updated with Docker repo"

# ── Step 8: Install Docker ────────────────────────
echo ""
echo "► Step 8: Installing Docker..."
DEBIAN_FRONTEND=noninteractive apt install -y -qq \
    docker-ce \
    docker-ce-cli \
    containerd.io \
    docker-buildx-plugin \
    docker-compose-plugin
echo "✅ Docker installed"

# ── Step 9: Start and enable Docker ──────────────
echo ""
echo "► Step 9: Starting Docker service..."
systemctl enable docker
systemctl start docker
echo "✅ Docker service started and enabled"

# ── Step 10: Verify installation ─────────────────
echo ""
echo "► Step 10: Verifying installation..."
docker --version
docker compose version

# ── Step 11: Test Docker ──────────────────────────
echo ""
echo "► Step 11: Running test container..."
docker run --rm hello-world

# ── Done ──────────────────────────────────────────
echo ""
echo "================================================"
echo "✅ Docker is installed and ready to use!"
echo "================================================"
echo ""
echo "Useful commands:"
echo "  docker ps                  - list running containers"
echo "  docker compose up -d       - start compose services"
echo "  systemctl status docker    - check docker status"
echo ""
echo "► Cleaning up: removing installer script..."
rm -f -- "$0"
echo "✅ Script removed"