MockzillaMockzilla

Storage-Treiber

Aktualisiert 29. Sept. 2026·4 Min. Lesezeit

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 drivers

Hier 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.

Storage-Treiber: PostgreSQL, die getesteten Versionen und wie du dich verbindest.

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 settings

Das 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:

  1. Setz STORAGE_INSTALL=false am Backend. Es prüft das Schema dann nur. Fehlt es oder ist es veraltet, startet das Backend nicht und sagt, was anzuwenden ist.
  2. 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 install

Bei 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.sql

Ein 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.

Wie es weitergeht

War diese Seite hilfreich?