Docker повторно использует слой, если инструкция и зависящие от неё файлы не изменились. Сначала копируйте package.json и yarn.lock, устанавливайте зависимости, а исходники добавляйте после: правка кода не запустит установку заново.
Сократите контекст сборки через .dockerignore. Исходники, нужные лишь для создания артефакта, подключайте к
RUN через bind mount: результат останется, а смонтированные файлы не попадут в слой. Кэш пакетного менеджера вынесите в cache mount, чтобы при пересборке загружались только новые или изменённые пакеты.Документация Docker также разбирает внешний кэш для разных сборок и сред. Проверьте Dockerfile: дорогие и редко меняющиеся шаги стоят выше, частые изменения ниже, лишние файлы исключены, кэш пакетов сохраняется между сборками.
