Storage-Treiber
Ein Storage-Treiber legt fest, wo ein Self-hosted-Backend seinen Anfrageverlauf, seine Replays und seine Sandbox-Daten ablegt, etwa die Zahlungen, die deine Tests anlegen. Das Backend wählt beim Start einen, über STORAGE_TYPE. Ist nichts gesetzt, hält es alles im Arbeitsspeicher.
Die Treiber
- Memory: der Standard. Nichts zu betreiben, und nichts bleibt, sobald der Container stoppt.
- Redis
- SQLite: eine Datei auf einem Volume. Nichts zu betreiben.
- PostgreSQL
- MySQL / MariaDB
- SQL Server
- Oracle
- CockroachDB
- MongoDB
- DynamoDB: eine Tabelle in deinem AWS-Konto, ohne einen Server, den du betreiben musst. Das Backend nimmt seine AWS-Zugangsdaten von den üblichen Stellen: aus Umgebungsvariablen, einer Konfigurationsdatei oder der Rolle des Rechners, auf dem es läuft.
Jeder Treiber ist im Preis enthalten.
Festlegen, welche Treiber ein Image enthält
Öffne die Einstellungen des Backends und wähle die Treiber unter Storage-Treiber aus. Eine Änderung gilt ab dem nächsten Build.
- Ist keiner ausgewählt, enthält das Image jeden Treiber.
- Memory und Redis sind in jedem Image.
Ein Image kann mehrere Treiber enthalten, etwa SQLite für einen Laptop und PostgreSQL für die CI. Was ein Image enthält, zeigt:
docker run --rm <image> storage driversHier steht <image> für dein Image mit seiner Version, etwa <deine-org>.registry.mockzilla.org/ci-payments:v2026.09.23.3.
Einen einrichten
Öffne den Tab Storage-Treiber des Backends und wähle einen Treiber. Der Tab zeigt die Versionen, auf denen er getestet wurde, wie du dich verbindest, und jede Variable, die er liest.
Für PostgreSQL:
docker run -d --name ci-payments --restart unless-stopped -p 2200:2200 \
-e STORAGE_TYPE=postgres \
-e POSTGRES_URL=postgres://mockzilla:secret@db.internal:5432/mockzilla \
<image>Das Image listet dieselben Variablen:
docker run --rm -e STORAGE_TYPE=postgres <image> storage settingsDas Schema
Ein Datenbanktreiber braucht seine Tabellen. Memory und Redis brauchen keine.
Standardmäßig legt das Backend das Schema beim ersten Start an und bringt es auf den neuen Stand, wenn du auf eine neue Version wechselst. Das ist bei jedem Start sicher, auch wenn mehrere Kopien gleichzeitig starten. Dafür braucht es die Berechtigung, die Tabellen anzulegen: einen Datenbankbenutzer, der Tabellen anlegen darf, oder AWS-Zugangsdaten, die die DynamoDB-Tabelle anlegen dürfen.
Ohne diese Berechtigung installierst du das Schema selbst:
- Setz
STORAGE_INSTALL=falseam Backend. Es prüft das Schema dann nur. Fehlt es oder ist es veraltet, startet das Backend nicht und sagt, was anzuwenden ist. - Installiere das Schema einmal, als Benutzer, der es anlegen darf. Das Image erledigt das und beendet sich.
Für den zweiten Schritt startest du das Image mit storage install und den Einstellungen des Treibers:
docker run --rm \
-e STORAGE_TYPE=postgres \
-e POSTGRES_URL=postgres://admin:secret@db.internal:5432/mockzilla \
<image> storage installBei einer SQL-Datenbank kannst du das SQL stattdessen deinem DBA geben. Das Image gibt es aus:
docker run --rm -e STORAGE_TYPE=postgres <image> storage print > mockzilla-postgres.sqlEin Teil des SQL gilt nur für bestimmte Server-Versionen. Gib storage print mit --server-version deine Version mit, dann gibt es nur aus, was passt. Dieselben SQL-Dateien liegen auch neben dem Image, in seinem Ordner storage.
Die DynamoDB-Tabelle kannst du auch selbst anlegen, etwa mit Terraform. Gib ihr den Partitionsschlüssel pk und den Sortierschlüssel sk, beide als String, und schalte TTL für das Attribut ttl ein. Setz dann STORAGE_INSTALL=false.
Wenn du auf eine neue Version wechselst, installiere ihr Schema, bevor du umstellst. Ein Backend mit veraltetem Schema startet nicht.