2017-09-14 2 views
1

Ich versuche, eine Dockerfile für ein Projekt zu erstellen, an dem ich arbeite. Die Installation aller erforderlichen Pakete über und pip dauert ein paar Minuten. Da sich die erforderlichen Pakete nicht ändern, gibt es einen Weg, damit ich zu den Schritten springen kann, die sich ändern?So beschleunigen Sie Docker Build

Ich verwende Docker CE unter OS X (Version 17.06.2-ce-mac27).

Antwort

1

Ja, Sie können. Erstellen Sie zwei Bilder

Dockerfile-Basis

FROM python:3.6 
RUN pip install selenium 

Dann bauen mit unter

docker build -f Dockerfile-base -t base . 

Dockerfile

FROM base 
COPY . . 

So werden Sie nicht Basis wieder aufzubauen. Und arbeite weiter am Dockerfile. Es gibt andere mögliche Lösungen, die auch das lokale Nexus package manager bereitstellen und es verwenden, um Pakete lokal zwischenzuspeichern. Aber dann zu viel Aufwand für einen Entwickler-Rechner

1

Wenn Sie den Docker-Cache verwenden, wird jede Ebene des Bildes nur neu erstellt, wenn es geändert hat oder die Ebene darüber geändert hat.

FROM alpine:latest   # First layer 
RUN apk add git gcc   # Second layer 
RUN apk add another-package # Third layer 

Wenn die erste oder die zweite Schicht geändert wird (sagen Sie OpenSSL auf die zweite Zeile zum Beispiel hinzufügen) die zweite und dritte Schicht, ohne den Cache wieder aufgebaut werden.
Wenn jedoch nur die dritte Schicht geändert wird, muss nur diese Schicht neu erstellt werden, während die erste und zweite Schicht aus dem Cache erstellt wird.
Manchmal können Sie also alle Sachen, die eigentlich gebaut werden sollen, an die Spitze der Datei verschieben, und dann lassen Sie die Sachen, die sich neu aufbauen, oft in einer eigenen Ebene weiter unten (obwohl mehr Ebenen die Bildgröße erhöhen).

Wenn Sie es lieber in mehrere Bilder verschieben, können Sie absolut tun, wie Tarun oben sagt. Wenn nur Daten von einem Bild in ein anderes übertragen werden sollen (dh nicht installierte Pakete und ähnliches), können Sie unter multi-stage builds nachsehen, wo Sie mehrere Bilder in einer Datei definieren und Daten von diesem kopieren können zuvor in der Datei erstellt.

Weitere Informationen zur Funktionsweise des Buildcaches finden Sie unter docs!

+0

Vergessen Sie nicht, Theres Cache brechen Betrieb – herm

Verwandte Themen