Docker-Deployment
Dieses Compose-Rezept baut sowohl das Backend als auch den Banner-Generator mit Nuitka direkt aus dem aktuellen Checkout. Es wird kein vorcompiliertes Drivers-Hub-Binary heruntergeladen. Das fertige Runtime-Image enthält weder den Compiler noch eine Python-Laufzeitumgebung.
Der Stack umfasst Drivers Hub, Banner-Generator, MariaDB 10.11 und Valkey 8. Die
Datenbank wird vor dem ersten Backend-Start durch den einmaligen Dienst db-init
initialisiert.
Konfiguration
Zuerst werden die Deployment- und Anwendungskonfiguration angelegt:
cp .env.example .env
cp upstream/HubBackend/config_sample.json config/config.json
In .env müssen sichere Passwörter für MariaDB eingetragen werden. Anschließend
wird config/config.json mindestens wie folgt angepasst:
{
"abbr": "drivershub",
"name": "Drivers Hub",
"domain": "localhost",
"prefix": "/api",
"server_host": "0.0.0.0",
"server_port": 7777,
"db_host": "mariadb",
"db_user": "drivershub",
"db_password": "dasselbe Passwort wie DB_PASSWORD in .env",
"db_name": "drivershub",
"db_data_directory": "/var/lib/mysqlext/",
"redis_host": "valkey",
"redis_port": 6379
}
Die gezeigten Schlüssel sind nur die zu ändernden Werte. Alle übrigen Schlüssel
aus config_sample.json müssen erhalten bleiben. config/config.json ist die
echte, persistente Anwendungskonfiguration und kann im laufenden Betrieb weiter
bearbeitet werden. Ein Image-Neubau ist für Konfigurationsänderungen nicht nötig;
anschließend genügt ein Neustart des Backends.
Das Datenbankpasswort muss in .env und config/config.json übereinstimmen, da
sowohl der MariaDB-Container als auch Drivers Hub es unabhängig voneinander beim
Start benötigen. Alle rein fachlichen Einstellungen werden ausschließlich in
config/config.json gepflegt.
Start
docker compose build
docker compose up -d
docker compose ps
Standardmäßig ist die API unter http://localhost:7777/api und Swagger UI unter
http://localhost:7777/api/doc erreichbar.
Persistente Daten
Alle persistenten Daten liegen im Projektverzeichnis:
data/
├── mariadb/
├── mariadb-external/
└── valkey/
Die Verzeichnisse entstehen beim ersten Start automatisch. Alternativ können die
drei Host-Pfade in compose.yaml beispielsweise nach ../drivershub-data/
geändert werden. MariaDB und Valkey veröffentlichen keine Ports am Host.
docker compose down entfernt Container und Netzwerk, lässt config/ und
data/ aber unangetastet. Diese Verzeichnisse müssen bewusst separat gesichert
oder gelöscht werden.
Upstream aktualisieren
upstream/HubBackend ist ein normaler, eigenständiger Git-Clone und bleibt
inhaltlich unverändert. Ein Update und anschließender Neubau erfolgen mit:
git -C upstream/HubBackend pull --ff-only
docker compose build
docker compose up -d
Betrieb
# Logs anzeigen
docker compose logs -f backend
# Nach Änderungen an config/config.json
docker compose restart backend
# Benutzer mit dem compilierten Programm anlegen
docker compose run --rm backend \
drivershub --config /app/config/config.json setup create-user user@example.com
# Nach Änderungen am Quellcode neu bauen
docker compose build
docker compose up -d
MariaDB erhält für den festen Benutzer drivershub das globale FILE-Recht,
weil das Projekt Tabellen mit DATA DIRECTORY anlegt. Eine Änderung dieses
Benutzernamens muss sowohl in compose.yaml, config/config.json als auch in
docker/mariadb-init.sql nachvollzogen werden.