68 lines
1.5 KiB
Bash
Executable File
68 lines
1.5 KiB
Bash
Executable File
#!/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" |