#!/bin/bash echo "════════════════════════════════════════════════════════════" echo " Docker 镜像构建前验证脚本" echo "════════════════════════════════════════════════════════════" echo "" # 颜色定义 GREEN='\033[0;32m' RED='\033[0;31m' YELLOW='\033[1;33m' NC='\033[0m' ERRORS=0 # 检查 logstash 依赖 echo "[1/3] 检查 logstash 依赖..." if mvn dependency:tree -pl shop-recycle-order-service 2>&1 | grep -q "logstash-logback-encoder"; then echo -e "${GREEN}✓${NC} logstash-logback-encoder 依赖已声明" else echo -e "${RED}✗${NC} 缺少 logstash-logback-encoder 依赖" ERRORS=$((ERRORS + 1)) fi # 检查 logback 配置文件 echo "[2/3] 检查 logback 配置..." for service in gateway order-service payment-service; do config="/opt/demo/demo/shop-recycle-${service}/src/main/resources/logback-spring.xml" if [ -f "$config" ]; then if grep -q "JSON_CONSOLE" "$config"; then echo -e "${YELLOW}!${NC} $service 使用 JSON 输出配置" else echo -e "${GREEN}✓${NC} $service 配置文件存在" fi else echo -e "${RED}✗${NC} $service logback 配置文件不存在" ERRORS=$((ERRORS + 1)) fi done # 检查编译后的 JAR 中是否包含 logstash echo "[3/3] 检查打包后的依赖..." if jar tf /opt/demo/demo/shop-recycle-order-service/target/order-service.jar 2>/dev/null | grep -q "logstash-logback-encoder"; then echo -e "${GREEN}✓${NC} logstash 已被打包到 JAR 中" else echo -e "${YELLOW}!${NC} logstash 未被打包到 JAR 中(但配置了 provided 或其他原因可能是正确的)" fi echo "" echo "════════════════════════════════════════════════════════════" if [ $ERRORS -eq 0 ]; then echo -e "${GREEN}✓ 验证通过,可以构建 Docker 镜像${NC}" exit 0 else echo -e "${RED}✗ 验证失败,请修复上述问题${NC}" exit 1 fi