#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT_DIR" if ! command -v docker >/dev/null 2>&1; then echo "[ERROR] docker not found" exit 1 fi if ! docker compose version >/dev/null 2>&1; then echo "[ERROR] docker compose not available" exit 1 fi if [ ! -f .env.center ]; then cp .env.center.example .env.center echo "[INFO] .env.center was missing; template created at .env.center" fi # hard split: center project name + dedicated compose/env file PROJECT_NAME="video-worker-center" COMPOSE_FILE="docker-compose.center-dispatch.yml" EDGE_PORT=$(grep '^EDGE_DISPATCH_PORT=' .env.center | tail -n1 | cut -d'=' -f2- || true) EDGE_PORT="${EDGE_PORT:-8020}" # one-click defaults for pulling latest code at build time DEFAULT_GIT_REPO_URL="" if command -v git >/dev/null 2>&1; then DEFAULT_GIT_REPO_URL="$(git config --get remote.origin.url || true)" fi export AUTO_PULL_LATEST="${AUTO_PULL_LATEST:-true}" export GIT_REPO_URL="${GIT_REPO_URL:-$DEFAULT_GIT_REPO_URL}" export GIT_BRANCH="${GIT_BRANCH:-master}" export GIT_CLONE_DEPTH="${GIT_CLONE_DEPTH:-1}" export GIT_PROJECT_SUBDIR="${GIT_PROJECT_SUBDIR:-video_worker}" if [ "${AUTO_PULL_LATEST}" = "true" ] && [ -z "${GIT_REPO_URL}" ]; then echo "[ERROR] AUTO_PULL_LATEST=true but GIT_REPO_URL is empty" echo "[INFO] set GIT_REPO_URL in .env.center or export it before running" exit 1 fi echo "[INFO] AUTO_PULL_LATEST=${AUTO_PULL_LATEST}" echo "[INFO] GIT_REPO_URL=${GIT_REPO_URL}" echo "[INFO] GIT_BRANCH=${GIT_BRANCH}" docker compose \ --project-name "$PROJECT_NAME" \ --env-file .env.center \ -f "$COMPOSE_FILE" \ up -d --build echo "[OK] center dispatch service started" echo "[INFO] health: curl http://127.0.0.1:${EDGE_PORT}/health" echo "[INFO] devices: curl http://127.0.0.1:${EDGE_PORT}/devices"