MongoDB-Version automatisch anhand der CPU wählen (start.sh)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
duffyduck
2026-07-26 19:37:28 +02:00
co-authored by Claude Fable 5
parent 247f20602b
commit 2f1a69288a
4 changed files with 66 additions and 4 deletions
Executable
+52
View File
@@ -0,0 +1,52 @@
#!/bin/bash
# Startet den Stack und wählt beim allerersten Start automatisch die passende
# MongoDB-Version für diese CPU:
#
# x86_64 mit AVX -> mongo:7.0
# x86_64 ohne AVX -> mongo:4.4 (Mongo 5+ startet ohne AVX nicht)
# aarch64 mit ARMv8.2 -> mongo:7.0 (z.B. Raspberry Pi 5, Apple Silicon)
# aarch64 ohne ARMv8.2 -> mongo:4.4 (z.B. Raspberry Pi 4)
#
# Die gewählte Version wird in .env als MONGO_VERSION festgeschrieben und
# danach NIE automatisch geändert: eine bestehende Datenbank kann nicht
# einfach unter einer neueren Major-Version starten (Migration nötig).
set -euo pipefail
cd "$(dirname "$0")"
detect_mongo_version() {
local arch flags
arch="$(uname -m)"
flags="$(grep -m1 -iE '^(flags|Features)' /proc/cpuinfo 2>/dev/null || true)"
case "$arch" in
x86_64)
if grep -qw avx <<< "$flags"; then echo "7.0"; else echo "4.4"; fi ;;
aarch64|arm64)
# asimddp ist ein ARMv8.2-Merkmal; Mongo 5+ braucht ARMv8.2-A
if grep -qw asimddp <<< "$flags"; then echo "7.0"; else echo "4.4"; fi ;;
*)
echo "4.4" ;;
esac
}
if [[ ! -f .env ]]; then
echo "FEHLER: .env fehlt (MONGO_USER/MONGO_PASS/MONGO_DBNAME)." >&2
exit 1
fi
if grep -q '^MONGO_VERSION=' .env; then
echo "==> MongoDB-Version ist bereits gepinnt: $(grep '^MONGO_VERSION=' .env)"
else
if [[ -d data/mongodb ]] && [[ -n "$(ls -A data/mongodb 2>/dev/null)" ]]; then
# Bestehende Datenbank ohne Pin: Stand vor dieser Automatik -> 4.4 festschreiben
VERSION="4.4"
echo "==> Bestehende Datenbank gefunden, pinne bisherige Version: mongo:$VERSION"
else
VERSION="$(detect_mongo_version)"
echo "==> CPU-Erkennung ($(uname -m)): verwende mongo:$VERSION"
fi
echo "MONGO_VERSION=$VERSION" >> .env
fi
docker-compose up -d
echo ""
echo "Stack gestartet. Logs: docker-compose logs -f unifi-network-application"