2016-09-18 1 views
-1

Für eine Zuweisung benötigt der Markierer eine Dockerdatei, um den Container meines Projekts zu erstellen, aber ich habe ziemlich komplexe Aufgaben. Ich muss auf die richtige Weise zusammenarbeiten, damit meine Dockerdatei für mich nützlich ist. Deshalb baue ich gerade eine Datei, die jedes Mal 30 Minuten braucht, nur um zu sehen, ob kleine Änderungen das Ergebnis in der richtigen Weise beeinflussen, also meine Frage ist, gibt es einen besseren Weg, dies zu tun?Ich versuche, die perfekte Docker bauen Datei zu erstellen, muss ich es jedes Mal von Grund auf neu bauen?

+2

Und du hast nicht die dockerfile hier zeigen? – manojlds

+0

meine Frage ist über den Prozess, nicht was ist in der Dockerfile –

+1

In Ermangelung einer Docker-Datei zu überprüfen, würde ich verweisen Sie auf die Leitlinien Dokumentation: https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/Eine weitere Übung, die ich befolge, ist die Erstellung von Basisbildern basierend auf meinem "Technologie" -Stack. So hat jede Anwendung eine sehr minimale und unkomplizierte Dockerfile –

Antwort

1

Die Dockerfile best practices, oder eine frühere Frage helfen könnten: Creating a Dockerfile - docker starts from scratch on each new build

Nach meiner Erfahrung eine vollständige Erstellung jedes Mal bedeutet, Sie arbeiten gegen Caching-Mechanismus der Docker, in der Regel durch COPY . . früh in der Dockerfile haben.

Wenn die in das Image kopierten Dateien dann verwendet werden, um einen Paketmanager zu steuern, oder andere Quellen herunterladen - versuchen Sie, nur das Skript oder die Anforderungsdatei zu kopieren und dann die restlichen Quellen zu kopieren.

ein vereinfachtes Python Beispiel aus der Best Practices angepasst Verlinken:

COPY requirements.txt . 
RUN pip install -r requirements.txt 
COPY . . 

Mit dieser Struktur, solange requirements.txt nicht ändert, die ersten COPY und folgende RUN Befehl Verwendung zwischengespeichert Schichten und Modernisierungen sind viel schneller.

0

Der erste Tipp verwendet COPY/ADD für Artefakte, die heruntergeladen werden müssen, wenn Docker erstellt wird.

Der zweite Tipp ist, Sie können eine Dockerfile für jeden Schritt erstellen und sie in den nächsten Schritten wiederverwenden.

zum Beispiel, wenn Sie Postgres db installieren und Wildfly in Ihrem Image installieren möchten. Sie können nur mit dem Erstellen einer Dockerfile für PostgresDB beginnen und diese erstellen, um Ihr Docker-Image zu erstellen. Dann eine andere Dockerfile schaffen, die

von your-Postgres Bild wiederzuverwenden
FROM your-postgres 
..... 

und so weiter ...

Verwandte Themen