47 lines
1.6 KiB
Bash
Executable File
47 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
ENV_FILE="$ROOT/.env"; [[ -f "$ENV_FILE" ]] && { set -a; source "$ENV_FILE"; set +a; }
|
|
ENV_NODES_FILE="$ROOT/.env.nodes"; [[ -f "$ENV_NODES_FILE" ]] && { set -a; source "$ENV_NODES_FILE"; set +a; }
|
|
|
|
NET_NAME="${NET_NAME:-argus-sys-net}"
|
|
WARMUP_NAME="${WARMUP_NAME:-argus-net-warmup}"
|
|
WARMUP_IMAGE="${WARMUP_IMAGE:-busybox:1.36}"
|
|
WARMUP_SECONDS="${WARMUP_SECONDS:-600}"
|
|
|
|
echo "[NET] warming up overlay network on worker: ${NET_NAME}"
|
|
|
|
if docker ps --format '{{.Names}}' | grep -q "^${WARMUP_NAME}$"; then
|
|
echo "[NET] warmup container already running: ${WARMUP_NAME}"
|
|
else
|
|
docker image inspect "$WARMUP_IMAGE" >/dev/null 2>&1 || docker pull "$WARMUP_IMAGE"
|
|
set +e
|
|
docker run -d --rm \
|
|
--name "$WARMUP_NAME" \
|
|
--network "$NET_NAME" \
|
|
${BINDIP:+--dns "$BINDIP"} \
|
|
"$WARMUP_IMAGE" sleep "$WARMUP_SECONDS"
|
|
rc=$?
|
|
set -e
|
|
if [[ $rc -ne 0 ]]; then
|
|
echo "[ERR] failed to start warmup container on network ${NET_NAME}. Is the overlay created with --attachable on manager?" >&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "[NET] waiting for local engine to see network (${NET_NAME})"
|
|
for i in {1..60}; do
|
|
if docker network inspect "$NET_NAME" >/dev/null 2>&1; then
|
|
echo "[NET] overlay visible locally now. You can run GPU compose."
|
|
docker network ls | grep -E "\b${NET_NAME}\b" || true
|
|
exit 0
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
echo "[WARN] network still not inspectable locally after 60s, but warmup container is running. Compose may still pass; proceed to run GPU compose and retry if needed." >&2
|
|
exit 0
|
|
|