#!/usr/bin/env bash # Recreate the OSINT compose stack without container_name collisions. # Named volumes (osint-dashboard_osint-pgdata, camera-snapshots) are kept — # never pass -v to `compose down`. # # Usage: scripts/compose-reup.sh # Env: COMPOSE_PROJECT_NAME (default osint-dashboard) # COMPOSE_PROFILES (default ingest — nats/ingester/news/cameras) set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$ROOT" export COMPOSE_PROJECT_NAME="${COMPOSE_PROJECT_NAME:-osint-dashboard}" PROFILE="${COMPOSE_PROFILES:-ingest}" NAMES=( osint-dashboard osint-db osint-nats osint-ingester osint-camera-scraper osint-news-scraper osint-news-summarizer ) echo "compose-reup: project=${COMPOSE_PROJECT_NAME} profile=${PROFILE} dir=${ROOT}" # Stop compose-owned containers first. Foreign/name-pinned leftovers survive this. docker compose --profile "${PROFILE}" down --remove-orphans || true # Drop any leftover name-pinned containers compose does not own (the # "Conflict. The container name is already in use" failure mode). for c in "${NAMES[@]}"; do if docker inspect "$c" >/dev/null 2>&1; then echo "compose-reup: removing leftover ${c}" docker rm -f "$c" >/dev/null fi done docker compose --profile "${PROFILE}" up -d --no-build "$@" docker compose --profile "${PROFILE}" ps