Jak debugować unieważnienie pamięci podręcznej Dockera?

15

Docker ma pamięć podręczną, co jest świetne, ale wszystko, co widzę w danych wyjściowych „kompilacji dokera” to:

---> Using cache

lub wynik polecenia (co oznacza, że ​​nie używa pamięci podręcznej).

Po jednym kroku w moim Dockerfile (COPY), wyraźnie nie używa pamięci podręcznej. Ale jestem całkiem pewien, że nic się nie zmieniło w folderze, który kopiuje. (To nasza aplikacja i napotykam na przypadek braku pamięci podręcznej, nawet na przykład, gdy wdrażam dwa razy z rzędu).

Czy istnieje sposób, aby Docker powiedział mi, co według niego zmieniło się?

Wiem, że Docker sprawdzał w tym celu znaczniki czasu, ale zostało to naprawione w Docker 1.8, a ja jestem tutaj w Docker 1.9.x.

Timmay
źródło
Proszę zamieścić swojeDockerfile
Joel E. Salas
1
@JoelESalas: Nie rozumiem twojej prośby. Coś tak prostego, jak to FROM ubuntu:14.04 MAINTAINER me COPY /app/ /app/pokaże. I nie zamierzam publikować całego kodu źródłowego i infrastruktury.
Timmay
1
Poza tym, nawet jeśli patrząc na Dockerfile mógł pomóc, pytanie było jak ja diagnozowanie takich problemów. Nie chcę, aby ktoś inny patrzył na moją konfigurację i powiedział mi odpowiedź. Chcę wiedzieć, jakie narzędzia istnieją, aby pomóc rozwiązać problem.
Timmay
Czy jesteś pewien, że nic się nie zmienia w tym katalogu?
Joel E Salas,

Odpowiedzi:

4

Użyj wyszukiwania binarnego za pomocą .dockerignore.

Dodaj połowę swoich plików .dockerignorei zbuduj kontener. Jeśli w tym COPYkroku używa pamięci podręcznej , wiesz, że zmienione pliki znajdują się w zestawie, który zignorowałeś, w przeciwnym razie wiesz, że to druga połowa. Powtórz ten test z zestawem plików, który ma zmianę, aż będzie to tylko jeden plik / folder.

(Drogi Lazyweb: znajdź sposób na rozszerzenie Dockera, aby uczynić to mniej bolesnym!)

Timmay
źródło
2
Dziwne podejście do debugowania czegoś lokalnego, dzięki. W moim przypadku próbuję obecnie debugować pamięć podręczną Docker w środowisku CI i jestem trochę zdenerwowany, że nie mogę znaleźć sposobu, aby Docker budował bardziej szczegółowe = /
elias