- [x] 完成log模块镜像构建、本地端到端写日志——收集——查询流程; - [x] 完成bind模块构建; - [x] 内置域名IP自动更新脚本,使用 /private/argus/etc目录下文件进行同步,容器启动时自动写IP,定时任务刷新更新DNS服务器IP和DNS规则; Co-authored-by: root <root@curious.host.com> Reviewed-on: #8 Reviewed-by: sundapeng <sundp@mail.zgclab.edu.cn>
138 lines
3.1 KiB
Bash
Executable File
138 lines
3.1 KiB
Bash
Executable File
#!/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 "" |