#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" PROJECT_DIR="${ROOT_DIR}/center_dispatch" cd "$PROJECT_DIR" if [ ! -f .env ]; then cp .env.example .env echo "[INFO] .env created from .env.example, please set GIT_REPO_URL/OSS config." fi 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 CONTAINER_NAME="video-worker-center-dispatch" EXISTING_ID="$(docker ps -aq -f "name=^${CONTAINER_NAME}$" || true)" if [ -n "$EXISTING_ID" ]; then echo "[WARN] found existing container ${CONTAINER_NAME} (${EXISTING_ID}), removing it" docker rm -f "$EXISTING_ID" >/dev/null 2>&1 || true fi PORT=$(grep '^EDGE_DISPATCH_PORT=' .env | tail -n1 | cut -d'=' -f2- || true) PORT="${PORT:-8060}" # AUTO_PULL_LATEST=true requires GIT_REPO_URL. If empty, fallback to local source build. AUTO_PULL="$(grep '^AUTO_PULL_LATEST=' .env | tail -n1 | cut -d'=' -f2- || true)" AUTO_PULL="${AUTO_PULL:-true}" GIT_REPO_URL_VAL="$(grep '^GIT_REPO_URL=' .env | tail -n1 | cut -d'=' -f2- || true)" if [ "$AUTO_PULL" = "true" ] && [ -z "$GIT_REPO_URL_VAL" ]; then if [ -d "${ROOT_DIR}/.git" ]; then REPO_FROM_GIT="$(git -C "$ROOT_DIR" config --get remote.origin.url || true)" else REPO_FROM_GIT="" fi if [ -n "$REPO_FROM_GIT" ]; then echo "[WARN] GIT_REPO_URL empty; use git remote origin: $REPO_FROM_GIT" export GIT_REPO_URL="$REPO_FROM_GIT" else echo "[WARN] GIT_REPO_URL empty; fallback AUTO_PULL_LATEST=false (build from local source)" export AUTO_PULL_LATEST=false fi fi docker compose up -d --build echo "[OK] center dispatch started" echo "[INFO] health: curl http://127.0.0.1:${PORT}/health"