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.
Dockerfile
FROM ubuntu:14.04
MAINTAINER me
COPY /app/ /app/
pokaże. I nie zamierzam publikować całego kodu źródłowego i infrastruktury.Odpowiedzi:
Użyj wyszukiwania binarnego za pomocą
.dockerignore
.Dodaj połowę swoich plików
.dockerignore
i zbuduj kontener. Jeśli w tymCOPY
kroku 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!)
źródło