Fuente
Євгеній Гизила | docker build cacheНедавно відкрив для себе, що в докері разом з команд...
1 040 Vistas/Alcance
2025-07-20 10:55
Mensaje №191
docker build cacheНедавно відкрив для себе, що в докері разом з командою RUN можна зробити mount [1] файлів з хоста, які будуть доступні тільки при збірці і не попадуть у фінальний імедж. Дуже зручна штука особливо для різних кеш файлів. Наприклад, раніше після вставновлення apt пакета треба було видаляти проміжні файли, щоб не роздувати розмір імеджа.RUN apt update \ && apt install … \ && rm -rf /var/lib/apt/lists/*
Але для мене більшою проблемою було те, що ми втрачаємо ці проміжні файли і якщо додати ще один пакет до apt install, то весь шар в докері відразу ж стає протухшим. Наступний раз коли запускаємо білд, то apt update починає викачувати всі метадані з чистого нуля і це триває, за моїми підрахунками, цілу вічність.Зmount=type=cache можна в імеджі до /var/cache/apt примаунити ефемерний кеш volume, який буде шаритися між build запусками і тому наступний раз apt update відпрацює вже набагато швидше. І як бонус не треба в кінці команди видаляти кеш файли, бо цей cache volume не потрапляє у фінальний імедж.Я взагалі цей параметр побачив вперше в документації до uv [2]:RUN --mount=type=cache,target=/root/.cache/uv \ uv sync
тому він добре працює і для збірки пакетів чи вставнлення залежностей1. RUN --mount=type=cache2. Using uv in Docker