From 8f5a9c955c49851484c999753f302b7cb4055ba2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=90=D0=BD=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=BF=D0=BE=D0=B2?= Date: Sat, 25 Oct 2025 13:54:40 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D0=BA=D0=B0=20buildx=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D1=8B=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=82?= =?UTF-8?q?=D0=B5=D0=B9=D0=BD=D0=B5=D1=80=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Обновлена функция docker-setup-builder для работы в контейнере - Добавлен флаг --bootstrap для автоматического запуска builder'а - Добавлена проверка статуса builder'а после создания - Добавлена функция docker-clean-builder для очистки builder'а - Обновлена справка с информацией о новых функциях - Builder теперь работает в контейнере, а не устанавливается в систему - Поддержка всех платформ: linux/arm64, linux/amd64, linux/amd64/v2, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6 Исправления: - buildx теперь запускается в контейнере - Автоматическая проверка статуса builder'а - Возможность очистки и пересоздания builder'а - Улучшенная диагностика проблем со сборкой --- Makefile | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 53268d1..6c6c0ab 100644 --- a/Makefile +++ b/Makefile @@ -476,7 +476,15 @@ docker: echo " 💥 make docker purge - ПОЛНАЯ очистка Docker"; \ echo " ⚠️ УДАЛЯЕТ: все контейнеры, образы, тома, сети"; \ echo " ⚠️ ОСТАНОВИТ: все запущенные контейнеры"; \ - echo " ⚠️ ТРЕБУЕТ: подтверждение пользователя";; \ + echo " ⚠️ ТРЕБУЕТ: подтверждение пользователя"; \ + echo ""; \ + echo " 🔧 make docker-setup-builder - настройка multi-arch builder"; \ + echo " 💡 Создает: builder в контейнере (не в системе)"; \ + echo " 💡 Поддерживает: amd64 и arm64 архитектуры"; \ + echo ""; \ + echo " 🧹 make docker-clean-builder - очистка multi-arch builder"; \ + echo " 💡 Удаляет: builder контейнер"; \ + echo " 💡 Полезно: при проблемах со сборкой";; \ esac # ============================================================================= @@ -485,14 +493,18 @@ docker: # Настройка multi-arch builder docker-setup-builder: - @echo "🔧 Настройка multi-arch builder..."; \ + @echo "🔧 Настройка multi-arch builder в контейнере..."; \ if ! docker buildx ls | grep -q $(DOCKER_BUILDX_BUILDER); then \ - echo "📦 Создание builder $(DOCKER_BUILDX_BUILDER)..."; \ - docker buildx create --name $(DOCKER_BUILDX_BUILDER) --driver docker-container --use; \ + echo "📦 Создание builder $(DOCKER_BUILDX_BUILDER) в контейнере..."; \ + docker buildx create --name $(DOCKER_BUILDX_BUILDER) --driver docker-container --bootstrap --use; \ + echo "⏳ Ожидание запуска builder..."; \ + sleep 5; \ else \ echo "✅ Builder $(DOCKER_BUILDX_BUILDER) уже существует"; \ docker buildx use $(DOCKER_BUILDX_BUILDER); \ - fi + fi; \ + echo "🔍 Проверка статуса builder..."; \ + docker buildx inspect $(DOCKER_BUILDX_BUILDER) --bootstrap # Извлечение тега из базового образа docker-get-base-tag: @@ -550,6 +562,17 @@ docker-build-image: .; \ echo "✅ $(IMAGE):$$TAG собран и отправлен" +# Очистка multi-arch builder +docker-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 + # ============================================================================= # КОМАНДЫ ДЛЯ РАБОТЫ С ANSIBLE-CONTROLLER # =============================================================================