Ошибки и коды · Инструкция
Docker build не видит изменения: cache invalidation
Запустите build с подробным progress и найдите конкретный неожиданно закэшированный step. Проверьте порядок `COPY`: mani
Короткий ответ
Найдите шаг, помеченный CACHED; для контрольной проверки соберите с `--no-cache`, затем перестройте Dockerfile так, чтобы изменяющиеся входы (`COPY`, ARG и т. п.) действительно участвовали в cache key нужного шага.
Проверка по порядку
- Запустите build с подробным progress и найдите конкретный неожиданно закэшированный step.
- Проверьте порядок `COPY`: manifest/lockfile должен попадать до шага установки зависимостей, если он должен инвалидировать слой.
- Для проверки выполните `docker build --no-cache ..` и сравните результат.
Исправление
- Если нужен частичный сброс, используйте поддерживаемый no-cache-filter для нужного stage.
- Не рассчитывайте, что содержимое build secret само инвалидирует cache; используйте безопасный cache-busting input без секрета.
- После исправления сделайте две сборки: первая обновляет слой, вторая при неизменных входах должна использовать cache.
Как понять, что исправлено
- Обычная повторная build перестраивает нужный слой после изменения входа, а неизменённые предыдущие слои продолжают кешироваться.
Важно
--no-cache полезен для диагностики, но не должен быть постоянным обходом. Исправьте Dockerfile так, чтобы изменяемые входы реально инвалидировали слой.
Что учитывать
--no-cache полезен для диагностики, но не должен быть постоянным обходом. Исправьте Dockerfile так, чтобы изменяемые входы реально инвалидировали слой.
Источники и проверка
Фактическая часть сверена по первичным источникам (в т.ч. Build cache invalidation). Пример и формулировки — редакция N1RO на 2026-09-17.