#!/bin/bash echo "=== Docker Compose YAML 格式检查 ===" echo DEPLOY_DIR="/root/server/archive" COMPOSE_FILE="$DEPLOY_DIR/docker-compose.yml" if [ ! -f "$COMPOSE_FILE" ]; then echo "❌ docker-compose.yml 文件不存在: $COMPOSE_FILE" echo "请先部署应用: ./archive-manager.sh deploy" exit 1 fi echo "✓ 找到 docker-compose.yml 文件" echo echo "🔍 检查 YAML 语法..." # 使用 Python 检查 YAML 语法 if command -v python3 &> /dev/null; then python3 -c " import yaml import sys try: with open('$COMPOSE_FILE', 'r') as f: yaml.safe_load(f) print('✅ YAML 语法正确') except yaml.YAMLError as e: print(f'❌ YAML 语法错误: {e}') sys.exit(1) " else echo "⚠️ Python3 不可用,跳过语法检查" fi echo echo "🔍 检查 Docker Compose 配置..." # 检测 Docker Compose 命令类型 if docker compose version &> /dev/null; then COMPOSE_CMD="docker compose" elif docker-compose version &> /dev/null; then COMPOSE_CMD="docker-compose" else echo "❌ Docker Compose 不可用" exit 1 fi echo "使用命令: $COMPOSE_CMD" # 验证配置文件 if $COMPOSE_CMD -f "$COMPOSE_FILE" config --quiet 2>/dev/null; then echo "✅ Docker Compose 配置正确" else echo "❌ Docker Compose 配置错误" echo "详细错误信息:" $COMPOSE_CMD -f "$COMPOSE_FILE" config exit 1 fi echo echo "📋 配置内容摘要:" $COMPOSE_CMD -f "$COMPOSE_FILE" config --services echo echo "=== 检查完成 ===" echo "现在可以启动服务: ./archive-manager.sh start"