feat: оптимизирована команда docker clean-builder

- Добавлено удаление кеша builds в команду docker clean
- Оптимизирована команда docker clean-builder с таймаутами
- Добавлена принудительная остановка контейнеров builder'а
- Убрана проблемная проверка docker buildx inspect
- Добавлены таймауты 10 сек для docker buildx rm и prune
- Обновлена справка с описанием новых возможностей
- Команда теперь работает быстро и надежно
This commit is contained in:
Сергей Антропов
2025-10-25 15:00:46 +03:00
parent 2652d8376f
commit 3caa0078e1

View File

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