Mount & Storage Strategien
Die Container unterscheiden sich primär durch ihre Mount-Konfiguration.
Über Bind Mounts, Volumes und tmpfs wird gesteuert:
- welche Daten persistent sind
- welche Verzeichnisse beschreibbar sind
- welche Bereiche isoliert bleiben
- welche Inhalte Container gemeinsam nutzen
Bind Mount für den Workspace
Abschnitt betitelt „Bind Mount für den Workspace“Der Projektcode wird auf dem Host-System ausgecheckt und über einen Bind Mount in die Container eingebunden.
compose.yml
- ..:/workspaces/security-oriented-dev-container-projectDieser Mount stellt sicher, dass alle Container auf denselben Sourcecode zugreifen können. Je nach Container erfolgt der Zugriff read-write oder read-only.
Read-only Zugriff:
compose.yml
- ..:/workspaces/security-oriented-dev-container-project:roNamed Volumes für dynamische Artefakte
Abschnitt betitelt „Named Volumes für dynamische Artefakte“Verzeichnisse, die während Build oder Installation entstehen und nicht im Repository landen sollen, werden über Named Volumes bereitgestellt.
Typisches Beispiel sind node_modules.
compose.yml
- root_node_modules:/workspaces/security-oriented-dev-container-project/node_modulesDiese Volumes können von mehreren Containern gemeinsam genutzt werden, ohne den gemounteten Workspace auf dem Host zu verändern.
Je nach Container erfolgt der Zugriff read-only oder read-write.
compose.yml
- root_node_modules:/workspaces/security-oriented-dev-container-project/node_modules:rotmpfs für temporäre Verzeichnisse
Abschnitt betitelt „tmpfs für temporäre Verzeichnisse“Verzeichnisse, die ausschließlich temporär benötigt werden, werden über tmpfs bereitgestellt.
compose.yml
tmpfs: - /tmp:rw,nosuid,nodevDaten in diesen Verzeichnissen werden nicht persistent gespeichert und beim Stoppen des Containers verworfen.
Dieses Muster wird auch verwendet, um bestimmte Workspace-Verzeichnisse gezielt auszublenden.
compose.yml
tmpfs: - /workspaces/security-oriented-dev-container-project/.git:rw,nosuid,nodevDadurch bleibt der Workspace insgesamt eingebunden, einzelne Verzeichnisse sind jedoch im Container nicht sichtbar.
Read-only Mounts für Konfiguration
Abschnitt betitelt „Read-only Mounts für Konfiguration“Konfigurationsdateien werden read-only eingebunden.
compose.yml
- ./.npmrc.deps:/tmp/.npmrc:roDieses Muster wird auch für SSH- oder Git-Konfigurationen verwendet.
Dadurch können Container die Konfigurationsdatei nutzen, ohne sie zu verändern.
Temporäre Cache-Verzeichnisse
Abschnitt betitelt „Temporäre Cache-Verzeichnisse“Tool- und Paketmanager-Caches werden gezielt in temporäre Verzeichnisse gelegt.
compose.yml
environment: NPM_CONFIG_CACHE: /tmp/npm-cacheDadurch werden keine persistenten Cache-Daten erzeugt und Container bleiben reproduzierbar.