66 lines
1.7 KiB
Bash
Executable File
66 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
LEGACY_CONTAINERS=(
|
|
storyforge-fastgpt-plugin
|
|
storyforge-sandbox
|
|
storyforge-pg
|
|
storyforge-minio
|
|
storyforge-redis
|
|
storyforge-mongo
|
|
)
|
|
|
|
LEGACY_NETWORK="storyforge-net"
|
|
COLLECTOR_HEALTH_URL="${COLLECTOR_HEALTH_URL:-http://127.0.0.1:8081/healthz}"
|
|
N8N_HEALTH_URL="${N8N_HEALTH_URL:-http://127.0.0.1:5670/healthz}"
|
|
APPLY="${APPLY:-0}"
|
|
|
|
log() {
|
|
printf '[cleanup] %s\n' "$*"
|
|
}
|
|
|
|
check_url() {
|
|
local url="$1"
|
|
curl -fsS "$url" >/dev/null
|
|
}
|
|
|
|
log "preflight: verifying StoryForge collector and n8n"
|
|
check_url "$COLLECTOR_HEALTH_URL"
|
|
check_url "$N8N_HEALTH_URL"
|
|
|
|
log "legacy containers:"
|
|
for container in "${LEGACY_CONTAINERS[@]}"; do
|
|
if docker ps -a --format '{{.Names}}' | grep -Fxq "$container"; then
|
|
status="$(docker inspect --format '{{.State.Status}}' "$container")"
|
|
printf ' - %s (%s)\n' "$container" "$status"
|
|
else
|
|
printf ' - %s (missing)\n' "$container"
|
|
fi
|
|
done
|
|
|
|
if [[ "$APPLY" != "1" ]]; then
|
|
log "dry run complete. Re-run with APPLY=1 to stop and remove legacy containers."
|
|
exit 0
|
|
fi
|
|
|
|
for container in "${LEGACY_CONTAINERS[@]}"; do
|
|
if docker ps -a --format '{{.Names}}' | grep -Fxq "$container"; then
|
|
log "removing $container"
|
|
docker rm -f "$container" >/dev/null
|
|
fi
|
|
done
|
|
|
|
if docker network inspect "$LEGACY_NETWORK" >/dev/null 2>&1; then
|
|
if [[ "$(docker network inspect "$LEGACY_NETWORK" --format '{{len .Containers}}')" == "0" ]]; then
|
|
log "removing empty network $LEGACY_NETWORK"
|
|
docker network rm "$LEGACY_NETWORK" >/dev/null
|
|
else
|
|
log "network $LEGACY_NETWORK still has attached containers; leaving it in place"
|
|
fi
|
|
fi
|
|
|
|
log "post-check: verifying StoryForge collector and n8n"
|
|
check_url "$COLLECTOR_HEALTH_URL"
|
|
check_url "$N8N_HEALTH_URL"
|
|
log "legacy runtime cleanup completed"
|