#!/usr/bin/env bash # docker-test.sh — Rebuild and redeploy Pipeline locally from scratch. # Cleans only Pipeline Docker resources before building. # # SAFETY: This script ONLY operates on the Pipeline compose project. # It will NOT stop, remove, or prune containers/images/volumes from # other projects (bill-tracker, open-webui, portainer, scanopy, etc.). # # IMPORTANT: Do not add global Docker cleanup here (e.g. `docker system prune`, # `docker image prune`, `docker volume prune`). Those commands operate on # ALL Docker resources system-wide and will destroy other running services. # # DATA PERSISTENCE: The postgres database volume is preserved across rebuilds. # Only app containers/images are cycled. DB data (gateways, keys, etc.) survives. set -euo pipefail cd "$(git rev-parse --show-toplevel)" PROJECT_NAME="$(docker compose config --format '{{.Name}}' 2>/dev/null || echo 'pipeline')" echo "=== Compose project: ${PROJECT_NAME} ===" echo "=== Stopping ${PROJECT_NAME} containers (preserving database volume) ===" # Stop and remove containers only — no --volumes (preserve postgres data), # no --rmi all (preserve pulled base images). Just rebuild the app images. docker compose down --remove-orphans 2>/dev/null || true echo "=== Building and starting all containers ===" docker compose up --build -d echo "=== Waiting for services to be healthy ===" sleep 5 echo "=== Checking container status ===" docker compose ps echo "" echo "=== Deploy complete ===" echo 'Frontend: http://localhost:3030' echo 'Backend: http://localhost:8001'