From 90d15952856c8e72cedfc84074bd6ba0c359dadc Mon Sep 17 00:00:00 2001 From: Micha Date: Wed, 3 Jun 2026 11:23:17 +0200 Subject: [PATCH] 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 --- .../komodo-mongo-restore-compose.test.yml | 19 +++++++++++++++++++ .../komodo-mongo-restore-test.sh | 16 ++++++++-------- 2 files changed, 27 insertions(+), 8 deletions(-) create mode 100644 ops/restore-tests/komodo-mongo-restore-compose.test.yml diff --git a/ops/restore-tests/komodo-mongo-restore-compose.test.yml b/ops/restore-tests/komodo-mongo-restore-compose.test.yml new file mode 100644 index 0000000..0fba9ca --- /dev/null +++ b/ops/restore-tests/komodo-mongo-restore-compose.test.yml @@ -0,0 +1,19 @@ +services: + restoretest-komodo-mongorestore: + image: mongo:7.0.32@sha256:32979a1189dfdc44da3f5ed40d910495f5ad8f6f7f77556646f890a30b2d3f56 + container_name: restoretest-komodo-mongorestore + restart: "no" + command: --quiet + environment: + MONGO_INITDB_ROOT_USERNAME: komodo + MONGO_INITDB_ROOT_PASSWORD: restoretest-komodo-mongo-pwd + volumes: + - /mnt/user/backups/restore-lab/komodo-mongo-restore/mongo:/data/db + healthcheck: + test: ["CMD", "mongosh", "--quiet", "--eval", "db.adminCommand('ping').ok"] + interval: 10s + timeout: 5s + retries: 10 + start_period: 30s + security_opt: + - no-new-privileges:true diff --git a/ops/restore-tests/komodo-mongo-restore-test.sh b/ops/restore-tests/komodo-mongo-restore-test.sh index c3ce670..7e2872b 100644 --- a/ops/restore-tests/komodo-mongo-restore-test.sh +++ b/ops/restore-tests/komodo-mongo-restore-test.sh @@ -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")"