#!/bin/bash

# 默认使用国内镜像
USE_CHINA_MIRROR="yes"

# 询问用户是否使用国内镜像
read -p "是否使用国内镜像站点安装 Docker 和 Docker Compose? [yes/no] (默认: yes): " USE_CHINA_MIRROR
USE_CHINA_MIRROR=${USE_CHINA_MIRROR:-yes}

# 设置镜像站点
if [ "$USE_CHINA_MIRROR" = "yes" ]; then
    DOCKER_MIRROR="https://mirrors.aliyun.com/docker-ce"
    DOCKER_COMPOSE_URL="https://get.daocloud.io/docker/compose/releases/download"
    echo "使用国内镜像站点安装 Docker 和 Docker Compose。"
else
    DOCKER_MIRROR="https://download.docker.com"
    DOCKER_COMPOSE_URL="https://github.com/docker/compose/releases/download"
    echo "使用官方站点安装 Docker 和 Docker Compose。"
fi

# 方法 1: 固定版本号(根据需要手动更新)
DOCKER_COMPOSE_VERSION="v2.25.0"

# 方法 2: 从阿里云镜像站点获取版本号(无需访问 GitHub)
if [ "$USE_CHINA_MIRROR" = "yes" ]; then
    DOCKER_COMPOSE_VERSION=$(curl -s https://mirrors.aliyun.com/docker-ce/linux/static/stable-x86_64/ | grep -oP 'docker-compose-\K.*(?=-linux-x86_64)' | tail -1)
fi

# 检测操作系统类型
if [ -f /etc/os-release ]; then
    . /etc/os-release
    OS=$ID
    VERSION=$VERSION_ID
else
    echo "无法检测操作系统类型"
    exit 1
fi

# 安装 Docker
install_docker() {
    case $OS in
        "debian")
            sudo apt-get update
            sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
            curl -fsSL ${DOCKER_MIRROR}/linux/debian/gpg | sudo apt-key add -
            sudo add-apt-repository "deb [arch=amd64] ${DOCKER_MIRROR}/linux/debian $(lsb_release -cs) stable"
            sudo apt-get update
            sudo apt-get install -y docker-ce docker-ce-cli containerd.io
            ;;
        "ubuntu")
            sudo apt-get update
            sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
            curl -fsSL ${DOCKER_MIRROR}/linux/ubuntu/gpg | sudo apt-key add -
            sudo add-apt-repository "deb [arch=amd64] ${DOCKER_MIRROR}/linux/ubuntu $(lsb_release -cs) stable"
            sudo apt-get update
            sudo apt-get install -y docker-ce docker-ce-cli containerd.io
            ;;
        "centos"|"rocky"|"almalinux")
            sudo yum install -y yum-utils
            sudo yum-config-manager --add-repo ${DOCKER_MIRROR}/linux/centos/docker-ce.repo
            sudo yum install -y docker-ce docker-ce-cli containerd.io
            ;;
        *)
            echo "不支持的操作系统: $OS"
            exit 1
            ;;
    esac

    # 启动并启用 Docker 服务
    sudo systemctl start docker
    sudo systemctl enable docker
}

# 安装 Docker Compose
install_docker_compose() {
    echo "正在安装 Docker Compose 版本: $DOCKER_COMPOSE_VERSION"
    sudo curl -L "${DOCKER_COMPOSE_URL}/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
}

# 主函数
main() {
    install_docker
    install_docker_compose

    echo "Docker 和 Docker Compose 安装完成！"
    docker --version
    docker-compose --version
}

main