#!/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