n1ro°
RU

Ошибки и коды · Инструкция

Docker build не видит изменения: cache invalidation

Запустите build с подробным progress и найдите конкретный неожиданно закэшированный step. Проверьте порядок `COPY`: mani

Редакция N1RO · Проверено

Короткий ответ

Найдите шаг, помеченный CACHED; для контрольной проверки соберите с `--no-cache`, затем перестройте Dockerfile так, чтобы изменяющиеся входы (`COPY`, ARG и т. п.) действительно участвовали в cache key нужного шага.

Проверка по порядку

  • Запустите build с подробным progress и найдите конкретный неожиданно закэшированный step.
  • Проверьте порядок `COPY`: manifest/lockfile должен попадать до шага установки зависимостей, если он должен инвалидировать слой.
  • Для проверки выполните `docker build --no-cache ..` и сравните результат.

Исправление

  1. Если нужен частичный сброс, используйте поддерживаемый no-cache-filter для нужного stage.
  2. Не рассчитывайте, что содержимое build secret само инвалидирует cache; используйте безопасный cache-busting input без секрета.
  3. После исправления сделайте две сборки: первая обновляет слой, вторая при неизменных входах должна использовать cache.

Как понять, что исправлено

  • Обычная повторная build перестраивает нужный слой после изменения входа, а неизменённые предыдущие слои продолжают кешироваться.

Важно

--no-cache полезен для диагностики, но не должен быть постоянным обходом. Исправьте Dockerfile так, чтобы изменяемые входы реально инвалидировали слой.

Что учитывать

--no-cache полезен для диагностики, но не должен быть постоянным обходом. Исправьте Dockerfile так, чтобы изменяемые входы реально инвалидировали слой.

Источники и проверка

Фактическая часть сверена по первичным источникам (в т.ч. Build cache invalidation). Пример и формулировки — редакция N1RO на 2026-09-17.