diff --git a/Makefile b/Makefile index e1a1811..011d68a 100644 --- a/Makefile +++ b/Makefile @@ -418,12 +418,14 @@ docker: done; \ echo "✅ Загрузка завершена";; \ clean) \ - echo "🧹 Очистка Docker образов..."; \ + echo "🧹 Очистка Docker образов и builds..."; \ for image in $(DOCKER_IMAGES); do \ echo "🗑️ Удаление $(DOCKER_REGISTRY):$$image-$(DOCKER_VERSION)"; \ docker rmi $(DOCKER_REGISTRY):$$image-$(DOCKER_VERSION) 2>/dev/null || true; \ done; \ - echo "✅ Образы очищены";; \ + echo "🗑️ Удаление кеша builds для наших образов..."; \ + docker buildx prune --filter type=exec.cachemount --filter type=source.local --filter type=source.git.checkout --force 2>/dev/null || true; \ + echo "✅ Образы и кеш builds очищены";; \ info) \ echo "📊 Информация об образах..."; \ for image in $(DOCKER_IMAGES); do \ @@ -462,13 +464,14 @@ docker: fi;; \ clean-builder) \ echo "🧹 Очистка multi-arch builder..."; \ - if docker buildx ls | grep -q $(DOCKER_BUILDX_BUILDER); then \ - echo "🗑️ Удаление builder $(DOCKER_BUILDX_BUILDER)..."; \ - docker buildx rm $(DOCKER_BUILDX_BUILDER) || true; \ - echo "✅ Builder удален"; \ - else \ - echo "ℹ️ Builder $(DOCKER_BUILDX_BUILDER) не найден"; \ - fi;; \ + echo "🛑 Принудительная остановка всех контейнеров builder..."; \ + docker ps -q --filter "name=$(DOCKER_BUILDX_BUILDER)" | xargs -r docker stop 2>/dev/null || true; \ + docker ps -aq --filter "name=$(DOCKER_BUILDX_BUILDER)" | xargs -r docker rm -f 2>/dev/null || true; \ + echo "🗑️ Удаление builder $(DOCKER_BUILDX_BUILDER) с таймаутом..."; \ + timeout 10 docker buildx rm --force $(DOCKER_BUILDX_BUILDER) 2>/dev/null || true; \ + echo "🧹 Очистка кеша builder..."; \ + timeout 10 docker buildx prune --all --force 2>/dev/null || true; \ + echo "✅ Builder и кеш удалены";; \ setup-builder) \ echo "🔧 Настройка multi-arch builder в контейнере..."; \ if ! docker buildx ls | grep -q $(DOCKER_BUILDX_BUILDER); then \ @@ -510,13 +513,16 @@ docker: echo " 💡 Загружает: все образы из registry inecs"; \ echo " 💡 Пропускает: отсутствующие образы"; \ echo ""; \ - echo " 🧹 make docker clean - удалить локальные образы"; \ - echo " 💡 Удаляет: все образы inecs/*:latest"; \ + echo " 🧹 make docker clean - удалить локальные образы и кеш builds"; \ + echo " 💡 Удаляет: все образы inecs/ansible-lab:*"; \ + echo " 💡 Очищает: кеш builds (exec.cachemount, source.local, git.checkout)"; \ + echo " 💡 Сохраняет: другие builds в системе"; \ echo " 💡 Безопасно: игнорирует ошибки"; \ echo ""; \ echo " 🧹 make docker clean-builder - очистка multi-arch builder"; \ - echo " 💡 Удаляет: builder контейнер"; \ - echo " 💡 Полезно: при проблемах со сборкой"; \ + echo " 💡 Удаляет: builder контейнер принудительно"; \ + echo " 💡 Очищает: весь кеш builds"; \ + echo " 💡 Быстро: принудительное удаление без ожидания"; \ echo ""; \ echo " 🔧 make docker setup-builder - настройка multi-arch builder"; \ echo " 💡 Создает: builder в контейнере (не в системе)"; \