Wie debugge ich die Ungültigkeit des Docker-Cache?

14

Docker hat einen Cache, was großartig ist, aber alles, was ich in der Ausgabe von "Docker Build" sehe, ist entweder:

---> Using cache

oder die Ausgabe des Befehls (was bedeutet, dass der Cache nicht verwendet wird).

Nach einem Schritt in meinem Dockerfile (eine Kopie) wird der Cache offensichtlich nicht verwendet. Aber ich bin mir ziemlich sicher, dass sich an dem Ordner, den es kopiert, nichts geändert hat. (Es ist unsere Anwendung, und ich stoße auf den No-Cache-Fall, auch wenn ich zum Beispiel zweimal hintereinander bereitstelle.)

Gibt es eine Möglichkeit, Docker dazu zu bringen, mir mitzuteilen, was sich seiner Meinung nach geändert hat?

Ich weiß, dass Docker verwendet hat, um Zeitstempel dafür zu überprüfen, aber das wurde in Docker 1.8 behoben, und ich bin auf Docker 1.9.x hier.

Timmay
quelle
Bitte posten Sie IhreDockerfile
Joel E Salas
1
@JoelESalas: Ich verstehe deine Anfrage nicht. Etwas so Einfaches wie FROM ubuntu:14.04 MAINTAINER me COPY /app/ /app/dies zeigen wird. Und ich werde nicht meinen gesamten Quellcode und meine gesamte Infrastruktur veröffentlichen.
Dienstag,
1
Außerdem war die Frage, wie ich solche Probleme diagnostizieren kann , selbst wenn ein Blick in die Docker-Datei hilfreich sein könnte . Ich möchte nicht, dass sich jemand anderes meine Konfiguration ansieht und mir die Antwort sagt. Ich möchte wissen, welche Tools vorhanden sind, um das Problem zu lösen.
Dienstag,
Wie sicher sind Sie, dass sich in diesem Verzeichnis nichts ändert?
Joel E Salas

Antworten:

4

Verwenden Sie die binäre Suche mit .dockerignore.

Fügen Sie die Hälfte Ihrer Dateien hinzu .dockerignoreund erstellen Sie den Container. Wenn der Cache für den COPYSchritt verwendet wird, wissen Sie, dass sich die geänderten Dateien in dem Satz befinden, den Sie ignoriert haben. Andernfalls wissen Sie, dass sie sich in der anderen Hälfte befinden. Wiederholen Sie diesen Test mit der Gruppe von Dateien, für die die Änderung gilt, bis es sich nur noch um eine Datei / einen Ordner handelt.

(Liebes Lazyweb: Finde heraus, wie du Docker erweitern kannst, um dies weniger schmerzhaft zu machen!)

Timmay
quelle
1
Hört sich gut an, um lokal etwas zu debuggen, danke. In meinem Fall versuche ich gerade, den Docker-Cache in einer CI-Umgebung zu debuggen, und bin ein bisschen verblüfft, dass ich anscheinend keine Möglichkeit finde, den Docker-Build ausführlicher zu gestalten = /
elias