argus/src/master/tests/scripts/01_up_master.sh

51 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TEST_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
MODULE_ROOT="$(cd "$TEST_ROOT/.." && pwd)"
PRIVATE_ROOT="$TEST_ROOT/private"
TMP_ROOT="$TEST_ROOT/tmp"
DNS_ROOT="$PRIVATE_ROOT/argus/etc"
BIND_UPDATE_SCRIPT_SRC="$(cd "$MODULE_ROOT/../bind" && pwd)/build/update-dns.sh"
BIND_UPDATE_SCRIPT_DEST="$DNS_ROOT/update-dns.sh"
mkdir -p "$PRIVATE_ROOT/argus/master"
mkdir -p "$PRIVATE_ROOT/argus/metric/prometheus"
mkdir -p "$TMP_ROOT"
mkdir -p "$DNS_ROOT"
# 确保上一次运行留下的容器/数据被清理
compose() {
if docker compose version >/dev/null 2>&1; then
docker compose "$@"
else
docker-compose "$@"
fi
}
pushd "$TEST_ROOT" >/dev/null
compose down --remove-orphans || true
popd >/dev/null
rm -rf "$TMP_ROOT" "$PRIVATE_ROOT"
mkdir -p "$PRIVATE_ROOT/argus/master"
mkdir -p "$PRIVATE_ROOT/argus/metric/prometheus"
mkdir -p "$TMP_ROOT"
mkdir -p "$DNS_ROOT"
# 中文提示:将 bind 模块自带的 update-dns.sh 下发到共享目录,模拟实际环境
if [[ -f "$BIND_UPDATE_SCRIPT_SRC" ]]; then
cp "$BIND_UPDATE_SCRIPT_SRC" "$BIND_UPDATE_SCRIPT_DEST"
chmod +x "$BIND_UPDATE_SCRIPT_DEST"
else
echo "[WARN] bind update script missing at $BIND_UPDATE_SCRIPT_SRC"
fi
pushd "$TEST_ROOT" >/dev/null
compose down --remove-orphans || true
MASTER_IMAGE_TAG="${MASTER_IMAGE_TAG:-argus-master:dev}" compose up -d
popd >/dev/null
echo "[INFO] Master container is up on http://localhost:31300"