fix(restore): komodo mongo restore own compose to avoid container name collision
Zweiter Lauf scheiterte mit Auth-Failure weil der Container-Name restoretest-komodo-mongo mit dem alten Bootstrap-Test kollidierte (stale Datadir auf shfs mit anderen Credentials). Fix: eigenes Compose mit eigenem Container-Namen (restoretest-komodo-mongorestore) und eigenem Project-Name, damit keine Namenskollision mit dem bestehenden Bootstrap-Test entsteht. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -30,8 +30,8 @@ done
|
||||
|
||||
RESTORE_ROOT="/mnt/user/backups/restore-lab/komodo-mongo-restore"
|
||||
REPORT_ROOT="/mnt/user/backups/restore-reports"
|
||||
COMPOSE_FILE="$SCRIPT_DIR/komodo-bootstrap-compose.test.yml"
|
||||
PROJECT_NAME="restoretest-komodo-mongo"
|
||||
COMPOSE_FILE="$SCRIPT_DIR/komodo-mongo-restore-compose.test.yml"
|
||||
PROJECT_NAME="restoretest-komodo-mongorestore"
|
||||
REPORT_FILE="$REPORT_ROOT/komodo-mongo-restore-$(date +%F).md"
|
||||
DUMP_HOST_PATH="/mnt/user/backups/borg/dumps/latest/komodo-mongo.archive.gz"
|
||||
|
||||
@@ -74,17 +74,17 @@ mkdir -p "$RESTORE_ROOT/mongo" "$RESTORE_ROOT/core" "$RESTORE_ROOT/keys" "$RESTO
|
||||
|
||||
# Stufe 1: Nur Test-Mongo starten (kein Core/Periphery noetig fuer Dump-Restore)
|
||||
docker compose -f "$COMPOSE_FILE" -p "$PROJECT_NAME" up -d \
|
||||
restoretest-komodo-mongo >/dev/null
|
||||
restoretest-komodo-mongorestore >/dev/null
|
||||
|
||||
mongo_ok=0
|
||||
for _ in $(seq 1 30); do
|
||||
s="$(docker inspect restoretest-komodo-mongo --format '{{.State.Health.Status}}' 2>/dev/null || true)"
|
||||
s="$(docker inspect restoretest-komodo-mongorestore --format '{{.State.Health.Status}}' 2>/dev/null || true)"
|
||||
if [ "$s" = "healthy" ]; then mongo_ok=1; break; fi
|
||||
sleep 2
|
||||
done
|
||||
if [ "$mongo_ok" -ne 1 ]; then
|
||||
echo "Test-Mongo never reported healthy" >&2
|
||||
docker logs --tail 80 restoretest-komodo-mongo >&2 || true
|
||||
docker logs --tail 80 restoretest-komodo-mongorestore >&2 || true
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -97,7 +97,7 @@ restore_status="ok"
|
||||
# alle Indexe sauber aufgebaut werden. mongorestore scheitert sonst am
|
||||
# Index-Rebuild weil der Test-User keine dbAdmin-Rolle hat. Fuer den
|
||||
# DR-Nachweis (Stack-ENV-Werte lesbar) reicht das.
|
||||
if ! docker exec -i restoretest-komodo-mongo \
|
||||
if ! docker exec -i restoretest-komodo-mongorestore \
|
||||
mongorestore --archive --gzip --noIndexRestore \
|
||||
-u komodo -p restoretest-komodo-mongo-pwd --authenticationDatabase admin \
|
||||
--drop \
|
||||
@@ -112,7 +112,7 @@ fi
|
||||
# (oder "stack" je nach Version). Wir zaehlen Dokumente als Beweis.
|
||||
stack_count="n/a"
|
||||
for coll in Stack stack; do
|
||||
count="$(docker exec restoretest-komodo-mongo mongosh --quiet \
|
||||
count="$(docker exec restoretest-komodo-mongorestore mongosh --quiet \
|
||||
-u komodo -p restoretest-komodo-mongo-pwd --authenticationDatabase admin \
|
||||
--eval "db.getSiblingDB('komodo').getCollection('$coll').countDocuments({})" \
|
||||
2>/dev/null | tr -d '[:space:]' || true)"
|
||||
@@ -123,7 +123,7 @@ for coll in Stack stack; do
|
||||
done
|
||||
|
||||
# Alle DBs + Collections auflisten als zusaetzlicher Nachweis
|
||||
db_list="$(docker exec restoretest-komodo-mongo mongosh --quiet \
|
||||
db_list="$(docker exec restoretest-komodo-mongorestore mongosh --quiet \
|
||||
-u komodo -p restoretest-komodo-mongo-pwd --authenticationDatabase admin \
|
||||
--eval "db.adminCommand({listDatabases:1}).databases.map(d=>d.name).join(', ')" \
|
||||
2>/dev/null | tr -d '\r' || echo "n/a")"
|
||||
|
||||
Reference in New Issue
Block a user