#!/usr/bin/env bash set -euo pipefail # 帮助信息 show_help() { cat << EOF ARGUS Unified Build System - Image Build Tool Usage: $0 [OPTIONS] Options: --intranet Use intranet mirror for Ubuntu 22.04 packages -h, --help Show this help message Examples: $0 # Build with default sources $0 --intranet # Build with intranet mirror EOF } # 解析命令行参数 use_intranet=false while [[ $# -gt 0 ]]; do case $1 in --intranet) use_intranet=true shift ;; -h|--help) show_help exit 0 ;; *) echo "Unknown option: $1" show_help exit 1 ;; esac done # 获取项目根目录 root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$root" echo "=======================================" echo "ARGUS Unified Build System" echo "=======================================" if [[ "$use_intranet" == true ]]; then echo "🌐 Mode: Intranet (Using internal mirror: 10.68.64.1)" build_args="--build-arg USE_INTRANET=true" else echo "🌐 Mode: Public (Using default package sources)" build_args="" fi echo "📁 Build context: $root" echo "" # 构建镜像的函数 build_image() { local image_name=$1 local dockerfile_path=$2 local tag=$3 echo "🔄 Building $image_name image..." echo " Dockerfile: $dockerfile_path" echo " Tag: $tag" if docker build $build_args -f "$dockerfile_path" -t "$tag" .; then echo "✅ $image_name image built successfully" return 0 else echo "❌ Failed to build $image_name image" return 1 fi } # 构建所有镜像 images_built=() build_failed=false # 构建 Elasticsearch 镜像 if build_image "Elasticsearch" "src/log/elasticsearch/build/Dockerfile" "argus-elasticsearch:latest"; then images_built+=("argus-elasticsearch:latest") else build_failed=true fi echo "" # 构建 Kibana 镜像 if build_image "Kibana" "src/log/kibana/build/Dockerfile" "argus-kibana:latest"; then images_built+=("argus-kibana:latest") else build_failed=true fi echo "" # 构建 BIND9 镜像 if build_image "BIND9" "src/bind/build/Dockerfile" "argus-bind9:latest"; then images_built+=("argus-bind9:latest") else build_failed=true fi echo "" echo "=======================================" echo "📦 Build Summary" echo "=======================================" if [[ ${#images_built[@]} -gt 0 ]]; then echo "✅ Successfully built images:" for image in "${images_built[@]}"; do echo " • $image" done fi if [[ "$build_failed" == true ]]; then echo "" echo "❌ Some images failed to build. Please check the errors above." exit 1 fi if [[ "$use_intranet" == true ]]; then echo "" echo "🌐 Built with intranet mirror configuration" fi echo "" echo "🚀 Next steps:" echo " cd src/log && ./scripts/save_images.sh # Export log images" echo " cd src/bind && ./scripts/save_images.sh # Export bind images" echo " cd src/log/tests && ./scripts/02_up.sh # Start log services" echo ""