Files
server-bootstrap/scripts/docker/install.sh
2026-03-18 03:29:25 +08:00

120 lines
2.4 KiB
Bash

#!/usr/bin/env bash
set -e
echo "================================="
echo " Docker Installation"
echo "================================="
BASE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Detect OS
if [[ -f /etc/os-release ]]; then
. /etc/os-release
else
echo "Cannot detect operating system."
exit 1
fi
echo "Detected OS: $ID"
echo "Running Docker installer for this distro..."
case "$ID" in
ubuntu)
bash "$BASE_DIR/os/ubuntu.sh"
;;
debian)
bash "$BASE_DIR/os/debian.sh"
;;
fedora|centos|rocky|almalinux|rhel)
bash "$BASE_DIR/os/rhel.sh"
;;
arch|manjaro)
bash "$BASE_DIR/os/arch.sh"
;;
alpine)
bash "$BASE_DIR/os/alpine.sh"
;;
opensuse*|suse|opensuse-leap|opensuse-tumbleweed)
bash "$BASE_DIR/os/opensuse.sh"
;;
*)
echo "Unsupported distribution: $ID"
exit 1
;;
esac
echo "Docker installation completed successfully."
echo "================================="
echo " Mirror Configuration"
echo "================================="
read -rp "Configure Docker mirror? (y/n): " DOCKER_MIRROR
if [[ "$DOCKER_MIRROR" == "y" ]]; then
echo "Select Docker mirror provider:"
echo "1) Liara"
echo "2) ArvanCloud"
echo "3) Runflare"
read -rp "Choice [1-3]: " DM
case "$DM" in
1)
echo "Applying Liara Docker mirror..."
bash "$BASE_DIR/mirrors/liara.sh"
;;
2)
echo "Applying ArvanCloud Docker mirror..."
bash "$BASE_DIR/mirrors/arvancloud.sh"
;;
3)
echo "Applying Runflare Docker mirror..."
bash "$BASE_DIR/mirrors/runflare.sh"
;;
*)
echo "Invalid choice. Skipping mirror configuration."
;;
esac
else
echo "Skipping Docker mirror configuration."
fi
echo "================================="
echo "Starting Docker service..."
systemctl enable docker
systemctl restart docker
if [[ -n "$SUDO_USER" ]]; then
echo "Adding $SUDO_USER to docker group..."
usermod -aG docker "$SUDO_USER" 2>/dev/null || true
fi
echo "================================="
echo "Verifying Docker installation..."
docker --version
if systemctl is-active --quiet docker; then
echo "Docker service is running."
else
echo "Docker service is NOT running."
fi
echo "================================="
echo "Docker setup finished successfully"
echo "================================="