Zum Inhalt springen

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

Cache Volumes werden in der compose.yml explizit definiert.

compose.yml

volumes:
next_cache:
turbo_cache:

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

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/.turbo

Dadurch bleibt das Verzeichnis im Container beschreibbar, ohne Teil des Projekts auf dem Host-System zu werden.


Container, die Cache-Artefakte erzeugen oder aktualisieren, benötigen Schreibzugriff.

compose.yml

- next_cache:/workspaces/security-oriented-dev-container-project/.next

Container, 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:ro

Ob read-only möglich ist, hängt vom Verhalten des jeweiligen Tools ab.


Nicht jeder Cache gehört in ein Cache Volume. Kurzlebige Tool-Caches wie npm- oder yarn-Caches können oft nach /tmp gelegt werden.

  1. Diese Verzeichnisse sind meist nicht Teil des Repositories, werden von den jeweiligen Tools jedoch an einem festen Pfad innerhalb des Projekts erwartet.