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