| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 | #!/bin/bash# RTSP视频流管理系统 - Docker快速启动脚本# 适用于AMD64平台set -e# 颜色定义RED='\033[0;31m'GREEN='\033[0;32m'YELLOW='\033[1;33m'NC='\033[0m' # No Color# 打印带颜色的消息print_info() {    echo -e "${GREEN}[INFO]${NC} $1"}print_warn() {    echo -e "${YELLOW}[WARN]${NC} $1"}print_error() {    echo -e "${RED}[ERROR]${NC} $1"}# 检查Docker是否安装check_docker() {    if ! command -v docker &> /dev/null; then        print_error "Docker未安装,请先安装Docker"        exit 1    fi    print_info "Docker版本: $(docker --version)"}# 检查Docker Compose是否安装check_docker_compose() {    if command -v docker-compose &> /dev/null; then        print_info "Docker Compose版本: $(docker-compose --version)"        return 0    elif docker compose version &> /dev/null; then        print_info "Docker Compose (plugin)版本: $(docker compose version)"        return 0    else        print_warn "Docker Compose未安装,将使用docker命令"        return 1    fi}# 创建必要的目录create_directories() {    print_info "创建输出目录..."    mkdir -p output    print_info "输出目录已创建: $(pwd)/output"}# 使用Docker Compose启动start_with_compose() {    print_info "使用Docker Compose启动服务..."        if command -v docker-compose &> /dev/null; then        docker-compose up -d    else        docker compose up -d    fi        print_info "服务已启动"}# 使用Docker命令启动start_with_docker() {    print_info "使用Docker命令启动服务..."        # 检查容器是否已存在    if docker ps -a | grep -q jtjai_media; then        print_warn "检测到已存在的容器,正在删除..."        docker rm -f jtjai_media    fi        # 构建镜像    print_info "构建Docker镜像..."    docker build --build-arg BUILDPLATFORM=linux/amd64 --build-arg TARGETPLATFORM=linux/amd64 -t jtjai_media:latest .        # 运行容器    print_info "启动Docker容器..."    docker run -d \        --name jtjai_media \        --platform linux/amd64 \        -p 8080:8080 \        -v "$(pwd)/output:/app/output" \        -v "$(pwd)/config.json:/app/config.json:ro" \        --restart unless-stopped \        jtjai_media:latest        print_info "服务已启动"}# 显示访问信息show_access_info() {    echo ""    print_info "=========================================="    print_info "RTSP视频流管理系统已成功启动!"    print_info "=========================================="    echo ""    print_info "访问地址:"    echo "  🌐 Web管理界面: http://localhost:8080/manager"    echo "  🏠 主页: http://localhost:8080/"    echo "  📊 API文档: http://localhost:8080/api"    echo ""    print_info "管理命令:"    echo "  查看日志: docker logs -f jtjai_media"    echo "  停止服务: docker stop jtjai_media"    echo "  启动服务: docker start jtjai_media"    echo "  删除容器: docker rm -f jtjai_media"    echo ""    print_info "输出目录: $(pwd)/output"    print_info "=========================================="}# 主函数main() {    echo ""    print_info "=========================================="    print_info "RTSP视频流管理系统 - Docker部署"    print_info "平台: AMD64"    print_info "=========================================="    echo ""        # 检查Docker    check_docker        # 创建目录    create_directories        # 检查并启动    if check_docker_compose; then        start_with_compose    else        start_with_docker    fi        # 等待服务启动    print_info "等待服务启动..."    sleep 3        # 检查服务状态    if docker ps | grep -q jtjai_media; then        print_info "✅ 容器运行正常"                # 显示访问信息        show_access_info                # 询问是否查看日志        echo ""        read -p "是否查看实时日志? (y/n) " -n 1 -r        echo ""        if [[ $REPLY =~ ^[Yy]$ ]]; then            docker logs -f jtjai_media        fi    else        print_error "❌ 容器启动失败"        print_info "查看错误日志:"        docker logs jtjai_media        exit 1    fi}# 执行主函数main
 |