#!/bin/bash # ============================================ # 快速 Docker 构建脚本 - 使用优化版 Dockerfile # 构建前请先执行:bash init-dependencies.sh # ============================================ set -e SERVICE=${1:-gateway} TAG=${2:-latest} REGISTRY=${3:-localhost:5000} BUILD_NUMBER=$(date +%Y%m%d%H%M%S) GIT_COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown") case $SERVICE in gateway) DOCKERFILE="shop-recycle-gateway/Dockerfile.optimized" IMAGE_NAME="$REGISTRY/shop-recycle-gateway:$TAG" ;; order) DOCKERFILE="shop-recycle-order-service/Dockerfile.optimized" IMAGE_NAME="$REGISTRY/shop-recycle-order-service:$TAG" ;; payment) DOCKERFILE="shop-recycle-payment-service/Dockerfile.optimized" IMAGE_NAME="$REGISTRY/shop-recycle-payment-service:$TAG" ;; *) echo "未知服务: $SERVICE" echo "用法: $0 [gateway|order|payment] [tag] [registry]" exit 1 ;; esac echo "════════════════════════════════════════════════════════════" echo "快速构建 - 使用优化版 Dockerfile" echo "════════════════════════════════════════════════════════════" echo "服务: $SERVICE" echo "TAG: $TAG" echo "镜像: $IMAGE_NAME" echo "Commit: $GIT_COMMIT" echo "" # 检查 Dockerfile 是否存在 if [ ! -f "$DOCKERFILE" ]; then echo "❌ 错误: $DOCKERFILE 不存在" echo "" echo "首次使用时,请先执行初始化脚本:" echo " bash init-dependencies.sh" echo " bash build-docker-optimized.sh $SERVICE $TAG" exit 1 fi echo ">>> 开始构建..." docker build \ --build-arg BUILD_NUMBER="$BUILD_NUMBER" \ --build-arg GIT_COMMIT="$GIT_COMMIT" \ -t "$IMAGE_NAME" \ -f "$DOCKERFILE" \ . echo "" echo "════════════════════════════════════════════════════════════" echo "✅ 构建完成!" echo "════════════════════════════════════════════════════════════" echo "" echo "镜像详细信息:" docker images | grep "$REGISTRY" | head -3 echo "" echo "运行容器: docker run -d -p 8080:8080 $IMAGE_NAME"