Files
HubBackendDocker/README.md
T

116 lines
3.5 KiB
Markdown

# 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:
```bash
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:
```json
{
"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
```bash
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:
```text
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:
```bash
git -C upstream/HubBackend pull --ff-only
docker compose build
docker compose up -d
```
## Betrieb
```bash
# 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.