{"id":1375,"date":"2024-07-23T12:39:18","date_gmt":"2024-07-23T12:39:18","guid":{"rendered":"https:\/\/dockerpros.com\/?post_type=glossary&#038;p=1375"},"modified":"2024-07-23T12:39:18","modified_gmt":"2024-07-23T12:39:18","slug":"dockerfile-export-cache-schlussel","status":"publish","type":"glossary","link":"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-export-cache-key\/","title":{"rendered":"Dockerfile \u2013export-cache-key"},"content":{"rendered":"<h2>Einf\u00fchrung in Dockerfile \u2013export-cache-key: Eine eingehende Untersuchung<\/h2>\n<p>Die <code>--export-cache-key<\/code> Option in <span class=\"glossaryai-tooltip glossary-term-652\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile\/\" target=\"_blank\">Dockerfile<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Eine Dockerfile ist ein Skript, das eine Reihe von Anweisungen zur Automatisierung der Erstellung von Docker-Images enth\u00e4lt. Sie gibt das Basis-Image, die Anwendungsabh\u00e4ngigkeiten und die Konfiguration an und erm\u00f6glicht so eine konsistente Bereitstellung \u00fcber verschiedene Umgebungen hinweg.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> is a powerful feature introduced in Docker 20.10 that allows users to specify a cache key for the build context, facilitating improved cache management and more efficient Docker <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\" target=\"_blank\">Bild<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Ein Bild ist eine visuelle Darstellung eines Objekts oder einer Szene, die typischerweise aus Pixeln in digitalen Formaten besteht. Es kann Informationen vermitteln, Emotionen hervorrufen und die Kommunikation \u00fcber verschiedene Medien hinweg erleichtern.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> builds. By defining a unique cache key, developers can optimize their build processes, reduce build times, and maintain consistency across different environments. This article aims to delve deep into the mechanics, usage, and best practices of the <code>--export-cache-key<\/code> option, providing insights that will enhance your <span class=\"glossaryai-tooltip glossary-term-652\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile\/\" target=\"_blank\">Dockerfile<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Eine Dockerfile ist ein Skript, das eine Reihe von Anweisungen zur Automatisierung der Erstellung von Docker-Images enth\u00e4lt. Sie gibt das Basis-Image, die Anwendungsabh\u00e4ngigkeiten und die Konfiguration an und erm\u00f6glicht so eine konsistente Bereitstellung \u00fcber verschiedene Umgebungen hinweg.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> management skills.<\/p>\n<h2>Grundlagen des Docker-Cache<\/h2>\n<p>Before we dive into the specifics of <code>--export-cache-key<\/code>, it is essential to understand how Docker&#8217;s caching system works. Docker utilizes a layered filesystem architecture: each command in a <span class=\"glossaryai-tooltip glossary-term-652\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile\/\" target=\"_blank\">Dockerfile<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Eine Dockerfile ist ein Skript, das eine Reihe von Anweisungen zur Automatisierung der Erstellung von Docker-Images enth\u00e4lt. Sie gibt das Basis-Image, die Anwendungsabh\u00e4ngigkeiten und die Konfiguration an und erm\u00f6glicht so eine konsistente Bereitstellung \u00fcber verschiedene Umgebungen hinweg.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> generates a layer in the <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\" target=\"_blank\">Bild<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Ein Bild ist eine visuelle Darstellung eines Objekts oder einer Szene, die typischerweise aus Pixeln in digitalen Formaten besteht. Es kann Informationen vermitteln, Emotionen hervorrufen und die Kommunikation \u00fcber verschiedene Medien hinweg erleichtern.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>. When you build a Docker <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\" target=\"_blank\">Bild<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Ein Bild ist eine visuelle Darstellung eines Objekts oder einer Szene, die typischerweise aus Pixeln in digitalen Formaten besteht. Es kann Informationen vermitteln, Emotionen hervorrufen und die Kommunikation \u00fcber verschiedene Medien hinweg erleichtern.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>, Docker checks its cache to see if it can reuse existing layers instead of creating new ones. If there is a cached layer that matches the command and context, Docker will use that layer, significantly speeding up the build process.<\/p>\n<p>However, caching can become inconsistent, especially in team environments or when deploying to various infrastructures. Changes in the build context or dependencies can lead to unexpected cache invalidations, which may result in longer build times. This is where the <code>--export-cache-key<\/code> option comes into play.<\/p>\n<h2>Wie <code>--export-cache-key<\/code> Werke<\/h2>\n<p>Die <code>--export-cache-key<\/code> option allows you to generate a distinct cache key for your build context. This cache key is a string that identifies the cache associated with your build. By associating specific cache keys with particular builds or environments, you can control which cached layers are used, enhancing your build\u2019s efficiency.<\/p>\n<h3>Syntax<\/h3>\n<p>The general syntax for using <code>--export-cache-key<\/code> lautet wie folgt:<\/p>\n<pre><code class=\"language-bash\">docker build --export-cache-key= -t : .<\/code><\/pre>\n<h3>Parameters<\/h3>\n<ul>\n<li><code>--export-cache-key=<\/code>: The cache key you wish to associate with your build context.<\/li>\n<li><code>-t :<\/code>: The name and tag you want to assign to the resulting <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\" target=\"_blank\">Bild<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Ein Bild ist eine visuelle Darstellung eines Objekts oder einer Szene, die typischerweise aus Pixeln in digitalen Formaten besteht. Es kann Informationen vermitteln, Emotionen hervorrufen und die Kommunikation \u00fcber verschiedene Medien hinweg erleichtern.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>.<\/li>\n<\/ul>\n<h2>Vorteile der Verwendung <code>--export-cache-key<\/code><\/h2>\n<h3>1. Improved Cache Management<\/h3>\n<p>By employing unique cache keys, developers can manage the cache more effectively. For example, if a project has multiple features being developed in parallel, each feature can have its own cache key. This means that changes in one feature don\u2019t inadvertently affect the build cache of another, leading to more predictable builds.<\/p>\n<h3>2. Verk\u00fcrzte Bauzeiten<\/h3>\n<p>Verwenden <code>--export-cache-key<\/code> can significantly decrease build times by minimizing unnecessary cache invalidation. When a build context remains unchanged but is otherwise unrelated to the current build, developers can employ the same cache key to leverage existing layers, yielding a faster build process.<\/p>\n<h3>3. Consistency Across Environments<\/h3>\n<p>In modern CI\/CD pipelines, consistency is key. By utilizing cache keys, you can ensure that the same cache is used across different environments and machine setups, thereby reducing the \"it works on my machine\" syndrome.<\/p>\n<h2>Real-world Use Cases<\/h2>\n<p>To illustrate the advantages of <code>--export-cache-key<\/code>, let\u2019s look at a few real-world scenarios where this feature can be beneficial.<\/p>\n<h3>Example 1: Multiple Feature Branches<\/h3>\n<p>Imagine a scenario where developers are working on different features in parallel, each in its own branch. Without <code>--export-cache-key<\/code>, any changes to the <span class=\"glossaryai-tooltip glossary-term-652\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile\/\" target=\"_blank\">Dockerfile<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Eine Dockerfile ist ein Skript, das eine Reihe von Anweisungen zur Automatisierung der Erstellung von Docker-Images enth\u00e4lt. Sie gibt das Basis-Image, die Anwendungsabh\u00e4ngigkeiten und die Konfiguration an und erm\u00f6glicht so eine konsistente Bereitstellung \u00fcber verschiedene Umgebungen hinweg.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> in one branch might inadvertently invalidate the cache in another branch, leading to unnecessary rebuilds.<\/p>\n<p>By implementing unique cache keys for each feature branch, you can prevent this issue. For instance:<\/p>\n<pre><code class=\"language-bash\"># F\u00fcr Funktion A\ndocker build --export-cache-key=featureA-cache -t myapp:featureA .\n\n# F\u00fcr Funktion B\ndocker build --export-cache-key=featureB-cache -t myapp:featureB .<\/code><\/pre>\n<h3>Example 2: CI\/CD Pipelines<\/h3>\n<p>In CI\/CD environments, builds are frequently triggered for the same codebase. This can lead to redundant builds if the build context remains the same. By employing <code>--export-cache-key<\/code>, you can ensure that builds reuse existing layers whenever possible.<\/p>\n<pre><code class=\"language-bash\">docker build --export-cache-key=ci-build-cache -t myapp:latest .<\/code><\/pre>\n<h3>Example 3: Multi-Stage Builds<\/h3>\n<p>Bei der Verwendung von Multi-Stage-Builds k\u00f6nnen sich bestimmte Stufen h\u00e4ufig \u00e4ndern, w\u00e4hrend andere konstant bleiben. Durch die Zuweisung verschiedener Cache-Schl\u00fcssel zu verschiedenen Stufen k\u00f6nnen Sie den Build-Prozess weiter optimieren.<\/p>\n<pre><code class=\"language-dockerfile\"># Stufe 1: Basis\nVON <span class=\"glossaryai-tooltip glossary-term-684\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/node\/\" target=\"_blank\">node<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Node, or Node.js, is a JavaScript runtime built on Chrome's V8 engine, enabling server-side scripting. It allows developers to build scalable network applications using asynchronous, event-driven architecture.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/node\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span>:14 AS-Basis\n<span class=\"glossaryai-tooltip glossary-term-673\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/copy\/\" target=\"_blank\">KOPIE<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">COPY ist ein Befehl in der Computerprogrammierung und Datenverwaltung, der das Kopieren von Dateien oder Daten von einem Ort an einen anderen erm\u00f6glicht und dabei die Datenintegrit\u00e4t und -zug\u00e4nglichkeit gew\u00e4hrleistet.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/copy\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> package.json yarn.lock .\/\n<span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/run\/\" target=\"_blank\">RUN<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" bezeichnet einen Befehl in verschiedenen Programmiersprachen und Betriebssystemen, um ein angegebenes Programm oder Skript auszuf\u00fchren. Er initiiert Prozesse und stellt eine kontrollierte Ausf\u00fchrungsumgebung f\u00fcr die Aufgabenbereitstellung bereit.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> yarn install\n\n# Stage 2: Build\nFROM base AS build\n<span class=\"glossaryai-tooltip glossary-term-673\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/copy\/\" target=\"_blank\">KOPIE<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">COPY ist ein Befehl in der Computerprogrammierung und Datenverwaltung, der das Kopieren von Dateien oder Daten von einem Ort an einen anderen erm\u00f6glicht und dabei die Datenintegrit\u00e4t und -zug\u00e4nglichkeit gew\u00e4hrleistet.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/copy\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> . .\n<span class=\"glossaryai-tooltip glossary-term-672\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/run\/\" target=\"_blank\">RUN<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">\"RUN\" bezeichnet einen Befehl in verschiedenen Programmiersprachen und Betriebssystemen, um ein angegebenes Programm oder Skript auszuf\u00fchren. Er initiiert Prozesse und stellt eine kontrollierte Ausf\u00fchrungsumgebung f\u00fcr die Aufgabenbereitstellung bereit.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/run\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> yarn build\n\n# Export cache for the build stage\ndocker build --export-cache-key=build-cache -t myapp:build .<\/code><\/pre>\n<h2>Best Practices for Using <code>--export-cache-key<\/code><\/h2>\n<h3>1. Definieren Sie aussagekr\u00e4ftige Cache-Schl\u00fcssel\n\nDie Auswahl der richtigen Cache-Schl\u00fcssel ist entscheidend f\u00fcr die Effizienz des Cachings. Ein gut gew\u00e4hlter Cache-Schl\u00fcssel sollte die Daten eindeutig identifizieren und gleichzeitig die Cache-Trefferquote maximieren. Hier sind einige bew\u00e4hrte Methoden zur Definition aussagekr\u00e4ftiger Cache-Schl\u00fcssel:\n\n1. Verwenden Sie eindeutige Identifikatoren:\n   - Nutzen Sie prim\u00e4re Schl\u00fcssel aus der Datenbank\n   - Kombinieren Sie relevante Attribute zu einem eindeutigen String\n   - Beispiel: \"user:123:profile\" f\u00fcr das Profil des Benutzers mit der ID 123\n\n2. Ber\u00fccksichtigen Sie den Kontext:\n   - F\u00fcgen Sie relevante Parameter hinzu, die die Daten beeinflussen\n   - Beispiel: \"product:456:reviews:page:2\" f\u00fcr die zweite Seite der Bewertungen des Produkts mit der ID 456\n\n3. Implementieren Sie eine konsistente Benennungskonvention:\n   - Verwenden Sie einen standardisierten Aufbau f\u00fcr Cache-Schl\u00fcssel\n   - Beispiel: \"{entity}:{id}:{attribute}:{context}\"\n\n4. Nutzen Sie Hashes f\u00fcr komplexe Schl\u00fcssel:\n   - Erstellen Sie einen Hash aus mehreren Parametern\n   - Beispiel: Hash(\"user:123:settings:theme:dark:language:de\")\n\n5. Ber\u00fccksichtigen Sie die G\u00fcltigkeitsdauer:\n   - F\u00fcgen Sie Zeitstempel oder Ablaufzeiten in den Schl\u00fcssel ein\n   - Beispiel: \"news:789:latest:2h\" f\u00fcr Nachrichten mit einer G\u00fcltigkeit von 2 Stunden\n\n6. Vermeiden Sie \u00fcberm\u00e4\u00dfig lange Schl\u00fcssel:\n   - Halten Sie die Schl\u00fcssel pr\u00e4gnant, aber aussagekr\u00e4ftig\n   - Nutzen Sie Abk\u00fcrzungen, wo sinnvoll\n\n7. Implementieren Sie eine Schl\u00fcsselstrategie f\u00fcr verwandte Daten:\n   - Verwenden Sie Pr\u00e4fixe oder Suffixe f\u00fcr verwandte Cache-Eintr\u00e4ge\n   - Beispiel: \"user:123:*\" f\u00fcr alle Caches, die mit dem Benutzer 123 in Verbindung stehen\n\n8. Ber\u00fccksichtigen Sie die Cache-Ebene:\n   - Passen Sie die Schl\u00fcsselstruktur an die jeweilige Cache-Ebene an (L1, L2, L3)\n   - Beispiel: \"L1:user:123:profile\" vs. \"L2:user:123:profile\"\n\n9. Nutzen Sie Namespaces:\n   - Gruppieren Sie verwandte Cache-Schl\u00fcssel in Namespaces\n   - Beispiel: \"app1:user:123:profile\" f\u00fcr die Anwendung \"app1\"\n\n10. Implementieren Sie eine Schl\u00fcsselgenerierungsfunktion:\n    - Erstellen Sie eine zentrale Funktion zur Generierung von Cache-Schl\u00fcsseln\n    - Stellen Sie sicher, dass die Funktion konsistent und leicht wartbar ist\n\nDurch die Implementierung dieser Strategien k\u00f6nnen Sie aussagekr\u00e4ftige Cache-Schl\u00fcssel erstellen, die die Effizienz Ihres Cachingsystems erheblich verbessern. Denken Sie daran, Ihre Cache-Schl\u00fcsselstrategie regelm\u00e4\u00dfig zu \u00fcberpr\u00fcfen und anzupassen, um den sich \u00e4ndernden Anforderungen Ihrer Anwendung gerecht zu werden.<\/h3>\n<p>Creating meaningful cache keys will assist you in managing your builds effectively. Avoid generic keys; instead, use descriptive names that reflect the purpose of the build context they represent. For example, using branch names or feature descriptions can be helpful.<\/p>\n<h3>2. Combine with Docker BuildKit<\/h3>\n<p><code>--export-cache-key<\/code> works best when combined with Docker BuildKit, which offers advanced features for <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\" target=\"_blank\">Bild<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Ein Bild ist eine visuelle Darstellung eines Objekts oder einer Szene, die typischerweise aus Pixeln in digitalen Formaten besteht. Es kann Informationen vermitteln, Emotionen hervorrufen und die Kommunikation \u00fcber verschiedene Medien hinweg erleichtern.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> building. Enabling BuildKit can be done by setting the environment variable:<\/p>\n<pre><code class=\"language-bash\">export DOCKER_BUILDKIT=1<\/code><\/pre>\n<h3>3. Regularly Review Your Cache Keys<\/h3>\n<p>As your project evolves, so should your cache management strategy. Regularly review your cache keys to ensure they still serve their intended purpose. This will help you identify any redundancy or opportunities for further optimization.<\/p>\n<h3>4. Leverage Build Contexts Wisely<\/h3>\n<p>Be mindful of what files and directories you include in your build context. Large and unnecessary files can slow down builds and may lead to cache invalidation. Use <code>.dockerignore<\/code> Dateien effektiv zu verwalten, um Ihren Build-Kontext zu optimieren.<\/p>\n<h3>5. \u00dcberwachen der Build-Leistung<\/h3>\n<p>Utilize Docker\u2019s built-in logging tools to monitor build performance. This can help you identify areas where cache usage is suboptimal, allowing you to refine your cache key strategy over time.<\/p>\n<h2>Fazit<\/h2>\n<p>Die <code>--export-cache-key<\/code> feature introduces a new level of efficiency and control to Docker <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\" target=\"_blank\">Bild<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Ein Bild ist eine visuelle Darstellung eines Objekts oder einer Szene, die typischerweise aus Pixeln in digitalen Formaten besteht. Es kann Informationen vermitteln, Emotionen hervorrufen und die Kommunikation \u00fcber verschiedene Medien hinweg erleichtern.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> builds. By allowing developers to specify cache keys, it promotes better cache management, reduced build times, and consistency across different environments. As development practices continue to evolve, leveraging features like <code>--export-cache-key<\/code> will be crucial for maintaining optimal build processes.<\/p>\n<p>Incorporating this feature into your <span class=\"glossaryai-tooltip glossary-term-652\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile\/\" target=\"_blank\">Dockerfile<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Eine Dockerfile ist ein Skript, das eine Reihe von Anweisungen zur Automatisierung der Erstellung von Docker-Images enth\u00e4lt. Sie gibt das Basis-Image, die Anwendungsabh\u00e4ngigkeiten und die Konfiguration an und erm\u00f6glicht so eine konsistente Bereitstellung \u00fcber verschiedene Umgebungen hinweg.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> practices can transform your build experience, particularly in collaborative and CI\/CD environments. By understanding its mechanics and implementing the best practices outlined in this article, you&#8217;ll be well-equipped to make the most of Docker&#8217;s caching capabilities. As you explore this powerful tool, remember that effective cache management is not just a matter of convenience; it\u2019s an integral part of modern software development that fosters greater productivity, efficiency, and consistency.<\/p>","protected":false},"excerpt":{"rendered":"<p>Die `\u2013export-cache-key`-Option in <span class=\"glossaryai-tooltip glossary-term-652\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile\/\" target=\"_blank\">Dockerfile<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Eine Dockerfile ist ein Skript, das eine Reihe von Anweisungen zur Automatisierung der Erstellung von Docker-Images enth\u00e4lt. Sie gibt das Basis-Image, die Anwendungsabh\u00e4ngigkeiten und die Konfiguration an und erm\u00f6glicht so eine konsistente Bereitstellung \u00fcber verschiedene Umgebungen hinweg.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> optimizes <span class=\"glossaryai-tooltip glossary-term-651\"><span class=\"glossaryai-link\"><a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\" target=\"_blank\">Bild<\/a><\/span><span class=\"gai-content-hidden glossaryai-tooltip-content\"><span class=\"gai-tooltip-body\"><span class=\"glossaryai-tooltip-text\">Ein Bild ist eine visuelle Darstellung eines Objekts oder einer Szene, die typischerweise aus Pixeln in digitalen Formaten besteht. Es kann Informationen vermitteln, Emotionen hervorrufen und die Kommunikation \u00fcber verschiedene Medien hinweg erleichtern.<span class=\"glossaryai-more-link\"> <a href=\"https:\/\/dockerpros.com\/de\/wiki\/image\/\">More \u00bb<\/a><\/span><\/span><\/span><\/span><\/span> baut, indem Entwickler einen Cache-Schl\u00fcssel f\u00fcr exportierte Ebenen angeben k\u00f6nnen. Dies verbessert die Build-Leistung und Konsistenz und minimiert unn\u00f6tige Neubauten.<\/p>","protected":false},"author":1,"featured_media":2063,"parent":0,"template":"","glossary-cat":[],"class_list":["post-1375","glossary","type-glossary","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dockerfile -export-cache-key - Dockerpros<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-export-cache-schlussel\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dockerfile -export-cache-key - Dockerpros\" \/>\n<meta property=\"og:description\" content=\"The `--export-cache-key` option in Dockerfile optimizes image builds by allowing developers to specify a cache key for exported layers. This enhances build performance and consistency, minimizing unnecessary rebuilds.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-export-cache-schlussel\/\" \/>\n<meta property=\"og:site_name\" content=\"Dockerpros\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-export-cache-key_1375.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"5\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/\",\"url\":\"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/\",\"name\":\"Dockerfile -export-cache-key - Dockerpros\",\"isPartOf\":{\"@id\":\"https:\/\/dockerpros.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-export-cache-key_1375.jpg\",\"datePublished\":\"2024-07-23T12:39:18+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/#primaryimage\",\"url\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-export-cache-key_1375.jpg\",\"contentUrl\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-export-cache-key_1375.jpg\",\"width\":800,\"height\":600,\"caption\":\"dockerfile-export-cache-key-2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/dockerpros.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Glossary\",\"item\":\"https:\/\/dockerpros.com\/fr\/wiki\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Dockerfile &#8211;export-cache-key\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dockerpros.com\/#website\",\"url\":\"https:\/\/dockerpros.com\/\",\"name\":\"Dockerpros\",\"description\":\"DockerPros \u2013 Your Ultimate Docker Resource Hub\",\"publisher\":{\"@id\":\"https:\/\/dockerpros.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dockerpros.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/dockerpros.com\/#organization\",\"name\":\"Dockerpros\",\"url\":\"https:\/\/dockerpros.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/dockerpros.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/Dockerpros_logo_blanco.png\",\"contentUrl\":\"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/Dockerpros_logo_blanco.png\",\"width\":532,\"height\":114,\"caption\":\"Dockerpros\"},\"image\":{\"@id\":\"https:\/\/dockerpros.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dockerfile -export-cache-key - Dockerpros\n\nIn diesem Artikel werden wir uns mit dem Konzept des \"-export-cache-key\" in Dockerfiles besch\u00e4ftigen. Dieses Feature erm\u00f6glicht es, den Cache-Schl\u00fcssel f\u00fcr einen bestimmten Build-Schritt zu exportieren und in nachfolgenden Builds wiederzuverwenden. Dies kann die Build-Zeiten erheblich reduzieren, insbesondere bei gro\u00dfen Projekten mit vielen Abh\u00e4ngigkeiten.\n\nDas \"-export-cache-key\" wird als Argument an den \"docker build\"-Befehl \u00fcbergeben. Es nimmt den Wert eines Cache-Schl\u00fcssels entgegen, der zuvor mit dem \"--export-cache-key\"-Flag generiert wurde. Dieser Cache-Schl\u00fcssel wird dann verwendet, um den Cache f\u00fcr den entsprechenden Build-Schritt wiederzuverwenden.\n\nHier ist ein Beispiel, wie man das \"-export-cache-key\" in einem Dockerfile verwenden kann:\n\n```dockerfile\nFROM alpine:latest\n\n# Installiere Abh\u00e4ngigkeiten\nRUN apk add --no-cache \\\n    python3 \\\n    py3-pip\n\n# Exportiere den Cache-Schl\u00fcssel f\u00fcr den Abh\u00e4ngigkeiten-Installationsschritt\nRUN --mount=type=cache,target=\/root\/.cache\/pip \\\n    pip install -r requirements.txt \\\n    &amp;&amp; echo \"export-cache-key=$(docker build --export-cache-key .)\" &gt; \/cache-key.txt\n\n# Verwende den exportierten Cache-Schl\u00fcssel in nachfolgenden Builds\nARG CACHE_KEY\nRUN --mount=type=cache,target=\/root\/.cache\/pip,from=cache-key=${CACHE_KEY} \\\n    pip install -r requirements.txt\n```\n\nIn diesem Beispiel wird der Cache-Schl\u00fcssel f\u00fcr den Abh\u00e4ngigkeiten-Installationsschritt exportiert und in der Datei \"\/cache-key.txt\" gespeichert. In nachfolgenden Builds kann dieser Cache-Schl\u00fcssel dann als Argument an den \"docker build\"-Befehl \u00fcbergeben werden, um den Cache wiederzuverwenden.\n\nEs ist wichtig zu beachten, dass das \"-export-cache-key\" nur f\u00fcr Build-Schritte funktioniert, die den \"--mount\"-Flag verwenden, um einen Cache-Mount zu erstellen. Dies liegt daran, dass der Cache-Schl\u00fcssel nur f\u00fcr diese Schritte generiert wird.\n\nZusammenfassend l\u00e4sst sich sagen, dass das \"-export-cache-key\" ein n\u00fctzliches Feature in Dockerfiles ist, um die Build-Zeiten zu reduzieren, indem der Cache f\u00fcr bestimmte Build-Schritte wiederverwendet wird. Es erfordert jedoch eine sorgf\u00e4ltige Planung und Implementierung, um die besten Ergebnisse zu erzielen.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-export-cache-schlussel\/","og_locale":"de_DE","og_type":"article","og_title":"Dockerfile -export-cache-key - Dockerpros","og_description":"The `--export-cache-key` option in Dockerfile optimizes image builds by allowing developers to specify a cache key for exported layers. This enhances build performance and consistency, minimizing unnecessary rebuilds.","og_url":"https:\/\/dockerpros.com\/de\/wiki\/dockerfile-export-cache-schlussel\/","og_site_name":"Dockerpros","og_image":[{"width":800,"height":600,"url":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-export-cache-key_1375.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/","url":"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/","name":"Dockerfile -export-cache-key - Dockerpros\n\nIn diesem Artikel werden wir uns mit dem Konzept des \"-export-cache-key\" in Dockerfiles besch\u00e4ftigen. Dieses Feature erm\u00f6glicht es, den Cache-Schl\u00fcssel f\u00fcr einen bestimmten Build-Schritt zu exportieren und in nachfolgenden Builds wiederzuverwenden. Dies kann die Build-Zeiten erheblich reduzieren, insbesondere bei gro\u00dfen Projekten mit vielen Abh\u00e4ngigkeiten.\n\nDas \"-export-cache-key\" wird als Argument an den \"docker build\"-Befehl \u00fcbergeben. Es nimmt den Wert eines Cache-Schl\u00fcssels entgegen, der zuvor mit dem \"--export-cache-key\"-Flag generiert wurde. Dieser Cache-Schl\u00fcssel wird dann verwendet, um den Cache f\u00fcr den entsprechenden Build-Schritt wiederzuverwenden.\n\nHier ist ein Beispiel, wie man das \"-export-cache-key\" in einem Dockerfile verwenden kann:\n\n```dockerfile\nFROM alpine:latest\n\n# Installiere Abh\u00e4ngigkeiten\nRUN apk add --no-cache \\\n    python3 \\\n    py3-pip\n\n# Exportiere den Cache-Schl\u00fcssel f\u00fcr den Abh\u00e4ngigkeiten-Installationsschritt\nRUN --mount=type=cache,target=\/root\/.cache\/pip \\\n    pip install -r requirements.txt \\\n    &amp;&amp; echo \"export-cache-key=$(docker build --export-cache-key .)\" &gt; \/cache-key.txt\n\n# Verwende den exportierten Cache-Schl\u00fcssel in nachfolgenden Builds\nARG CACHE_KEY\nRUN --mount=type=cache,target=\/root\/.cache\/pip,from=cache-key=${CACHE_KEY} \\\n    pip install -r requirements.txt\n```\n\nIn diesem Beispiel wird der Cache-Schl\u00fcssel f\u00fcr den Abh\u00e4ngigkeiten-Installationsschritt exportiert und in der Datei \"\/cache-key.txt\" gespeichert. In nachfolgenden Builds kann dieser Cache-Schl\u00fcssel dann als Argument an den \"docker build\"-Befehl \u00fcbergeben werden, um den Cache wiederzuverwenden.\n\nEs ist wichtig zu beachten, dass das \"-export-cache-key\" nur f\u00fcr Build-Schritte funktioniert, die den \"--mount\"-Flag verwenden, um einen Cache-Mount zu erstellen. Dies liegt daran, dass der Cache-Schl\u00fcssel nur f\u00fcr diese Schritte generiert wird.\n\nZusammenfassend l\u00e4sst sich sagen, dass das \"-export-cache-key\" ein n\u00fctzliches Feature in Dockerfiles ist, um die Build-Zeiten zu reduzieren, indem der Cache f\u00fcr bestimmte Build-Schritte wiederverwendet wird. Es erfordert jedoch eine sorgf\u00e4ltige Planung und Implementierung, um die besten Ergebnisse zu erzielen.","isPartOf":{"@id":"https:\/\/dockerpros.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/#primaryimage"},"image":{"@id":"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/#primaryimage"},"thumbnailUrl":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-export-cache-key_1375.jpg","datePublished":"2024-07-23T12:39:18+00:00","breadcrumb":{"@id":"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/#primaryimage","url":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-export-cache-key_1375.jpg","contentUrl":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/dockerfile-export-cache-key_1375.jpg","width":800,"height":600,"caption":"dockerfile-export-cache-key-2"},{"@type":"BreadcrumbList","@id":"https:\/\/dockerpros.com\/wiki\/dockerfile-export-cache-key\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dockerpros.com\/"},{"@type":"ListItem","position":2,"name":"Glossary","item":"https:\/\/dockerpros.com\/fr\/wiki\/"},{"@type":"ListItem","position":3,"name":"Dockerfile &#8211;export-cache-key"}]},{"@type":"WebSite","@id":"https:\/\/dockerpros.com\/#website","url":"https:\/\/dockerpros.com\/","name":"Docker-Profis","description":"DockerPros \u2013 Ihr umfassender Docker-Ressourcen-Hub","publisher":{"@id":"https:\/\/dockerpros.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dockerpros.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/dockerpros.com\/#organization","name":"Docker-Profis","url":"https:\/\/dockerpros.com\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/dockerpros.com\/#\/schema\/logo\/image\/","url":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/Dockerpros_logo_blanco.png","contentUrl":"https:\/\/dockerpros.com\/wp-content\/uploads\/2024\/07\/Dockerpros_logo_blanco.png","width":532,"height":114,"caption":"Dockerpros"},"image":{"@id":"https:\/\/dockerpros.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/dockerpros.com\/de\/wp-json\/wp\/v2\/glossary\/1375","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dockerpros.com\/de\/wp-json\/wp\/v2\/glossary"}],"about":[{"href":"https:\/\/dockerpros.com\/de\/wp-json\/wp\/v2\/types\/glossary"}],"author":[{"embeddable":true,"href":"https:\/\/dockerpros.com\/de\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":0,"href":"https:\/\/dockerpros.com\/de\/wp-json\/wp\/v2\/glossary\/1375\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dockerpros.com\/de\/wp-json\/wp\/v2\/media\/2063"}],"wp:attachment":[{"href":"https:\/\/dockerpros.com\/de\/wp-json\/wp\/v2\/media?parent=1375"}],"wp:term":[{"taxonomy":"glossary-cat","embeddable":true,"href":"https:\/\/dockerpros.com\/de\/wp-json\/wp\/v2\/glossary-cat?post=1375"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}