У Docker есть кеш, и это здорово, но все, что я вижу в выводе "docker build", это либо:
---> Using cache
или вывод команды (что означает, что она не использует кеш).
После одного шага в моем Dockerfile (КОПИЯ) он явно не использует кеш. Но я почти уверен, что в папке, которую он копирует, ничего не изменилось. (Это наше приложение, и я сталкиваюсь с ситуацией без кеша, например, даже когда развертываю дважды подряд.)
Есть ли способ заставить Docker сказать мне, что, по его мнению, изменилось?
Я знаю, что Docker раньше проверял для этого временные метки, но это было исправлено в Docker 1.8, и я использую Docker 1.9.x здесь.
Используйте двоичный поиск с .dockerignore
.
Добавьте половину своих файлов в .dockerignore
, и построим контейнер. Если он использует кеш для COPY
step, то вы знаете, что измененные файлы находятся в наборе, который вы проигнорировали, иначе вы знаете, что это другая половина. Повторите этот тест с набором файлов, в которых есть изменения, пока не останется только один файл / папка.
(Уважаемый lazyweb: придумайте способ расширить Docker, чтобы сделать это менее болезненным!)