Worum es geht
Den Inhalt von Dateien legt CDMS nicht in der Datenbank ab, sondern in einem Dateispeicher. Welcher das ist, heißt Speicher-Backend. Du wählst es im Hub am System, Feld Speicher:
FILESYSTEM: Die Inhalte liegen in einem Verzeichnis des Servers, im Container auf einem eingebundenen Volume.NONE: Die Anwendung hat keinen Dateispeicher.
Den Dateispeicher bringt ein eigener Baustein in die Anwendung: cdms-localfs-storage. Mit NONE fehlt dieser Baustein.
Die Varianten
Wann: Die Anwendung hat Datei-Modelle.
-
1Buildnimmt den Baustein
cdms-localfs-storagein die Anwendung auf -
2Buildder Projektrahmen trägt
codamai.cdms.persistence.file.basePathin die Konfiguration ein, Standard/files/ -
3CDMSprüft beim Start das Basisverzeichnis
-
4CDMS→File storagelegt Inhalte unter
<basePath>/…/<fileId>ab
Ergebnis: Siehe Ablage und Mandantentrennung im Speicher.
Wann: Die Anwendung braucht keine Dateien.
-
1Buildkein Dateispeicher-Baustein, kein Basisverzeichnis
-
2CDMSeine Anfrage will einen Inhalt schreiben oder lesen
-
3CDMS→Clientabgelehnt,
file-storage-not-configured
Ergebnis: Datei-Modelle ergeben hier keinen Sinn. Für sie braucht das System einen Dateispeicher.
Siehe auch Der Projektrahmen (Scaffold).
Das Basisverzeichnis einstellen
codamai:
cdms:
persistence:
file:
basePath: ${CODAMAI_CDMS_PERSISTENCE_FILE_BASE_PATH:/files/}env:
- name: CODAMAI_CDMS_PERSISTENCE_FILE_BASE_PATH
value: /data/files/
volumeMounts:
- name: cdms-files
mountPath: /data/filesDie Betriebsart (SINGLE oder MULTI) stellst du für die ganze Installation ein. Sie gilt für Datenbank und Dateispeicher gleichermaßen und entscheidet, ob Mandanten eigene Verzeichnisse bekommen. Siehe SINGLE und MULTI über beide Module.
Die Prüfung beim Start
-
CDMSEingetragenIst
basePathgesetzt?↳ nein Anwendung startet nicht -
CDMSVorhandenGibt es das Verzeichnis, und ist es ein Verzeichnis?↳ nein Anwendung startet nicht, das Log nennt den Pfad
-
CDMSBeschreibbarDarf die Anwendung dort schreiben?↳ nein Anwendung startet nicht, das Log nennt den Pfad
- Speicher bereit
CDMS legt das Basisverzeichnis bewusst nicht selbst an. Wäre das Volume nicht eingebunden, würde die Anwendung sonst in das Dateisystem des Containers schreiben und beim nächsten Neustart alle Dateien verlieren, während die Datensätze in der Datenbank bleiben.
Im laufenden Betrieb
Ist der Actuator eingebunden, meldet der Health-Check einen Eintrag storageRoot: writable, solange das Basisverzeichnis beschreibbar ist, sonst DOWN mit dem Grund. So fällt ein verlorenes Volume auf, bevor Benutzer es merken.
Fallen
Wie es weitergeht
- Wie die Dateien im Speicher liegen: Ablage und Mandantentrennung im Speicher
- Was ein Datei-Modell ist: Was ein Datei-Modell ist
- Wie groß Dateien sein dürfen: Größengrenzen