Cache Volumes
Cache Volumes speichern Framework- oder Build-Artefakte, die zur Laufzeit oder beim Build in projektbezogenen Verzeichnissen entstehen1, aber nicht im Workspace auf dem Host-System gespeichert werden sollen.
Typische Beispiele:
.next.turbo
Definition
Abschnitt betitelt „Definition“Cache Volumes werden in der compose.yml explizit definiert.
compose.yml
volumes: next_cache: turbo_cache:Warum Cache Volumes verwendet werden
Abschnitt betitelt „Warum Cache Volumes verwendet werden“Frameworks wie Next.js erzeugen Laufzeit- und Build-Artefakte in projektbezogenen Verzeichnissen wie .next.
Auch wenn diese Verzeichnisse nicht versioniert werden, müssen sie im Container häufig beschreibbar vorhanden sein.
Ein Cache Volume ist in solchen Fällen sinnvoll, wenn:
- der Workspace im Container read-only eingebunden ist
- generierte Artefakte nicht auf dem Host landen sollen
- mehrere Container denselben Cache-Pfad nutzen sollen
- Build- oder Runtime-Daten zwischen Containerstarts erhalten bleiben sollen
Einbindung in Container
Abschnitt betitelt „Einbindung in Container“Das Volume wird an den vom Framework erwarteten Pfad gemountet.
compose.yml
- next_cache:/workspaces/security-oriented-dev-container-project/.next- turbo_cache:/workspaces/security-oriented-dev-container-project/.turboDadurch bleibt das Verzeichnis im Container beschreibbar, ohne Teil des Projekts auf dem Host-System zu werden.
Read-write und Read-only Nutzung
Abschnitt betitelt „Read-write und Read-only Nutzung“Container, die Cache-Artefakte erzeugen oder aktualisieren, benötigen Schreibzugriff.
compose.yml
- next_cache:/workspaces/security-oriented-dev-container-project/.nextContainer, die vorhandene Cache-Daten nur nutzen sollen, können das Volume read-only einbinden.
compose.yml
- turbo_cache:/workspaces/security-oriented-dev-container-project/.turbo:roOb read-only möglich ist, hängt vom Verhalten des jeweiligen Tools ab.
Abgrenzung zu /tmp
Abschnitt betitelt „Abgrenzung zu /tmp“Nicht jeder Cache gehört in ein Cache Volume. Kurzlebige Tool-Caches wie npm- oder yarn-Caches können oft nach /tmp gelegt werden.
Footnotes
Abschnitt betitelt „Footnotes“-
Diese Verzeichnisse sind meist nicht Teil des Repositories, werden von den jeweiligen Tools jedoch an einem festen Pfad innerhalb des Projekts erwartet. ↩