Исправления проблем с Docker Buildx

- Заменен buildx ls на безопасный buildx inspect
- Добавлены диагностические команды для buildx
- Создана функция docker-diagnose-buildx для отладки
- Добавлена функция docker-reset-builder для сброса
- Предварительная загрузка образа moby/buildkit:buildx-stable-1
- Полная очистка buildkit контейнеров
- Обновлена документация и справка
- Добавлен тестовый скрипт для проверки исправлений

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
Сергей Антропов
2025-10-25 15:13:00 +03:00
parent 2652d8376f
commit e389cad393
3 changed files with 330 additions and 18 deletions

115
scripts/test-buildx-fixes.sh Executable file
View File

@@ -0,0 +1,115 @@
#!/bin/bash
# Тестирование исправлений buildx проблем
# Автор: Сергей Антропов
# Сайт: https://devops.org.ru
set -euo pipefail
echo "🧪 ТЕСТИРОВАНИЕ ИСПРАВЛЕНИЙ BUILDX"
echo "=================================="
echo ""
# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
RESET='\033[0m'
# Функция для вывода результатов
test_result() {
local test_name="$1"
local result="$2"
local message="$3"
if [ "$result" = "PASS" ]; then
echo -e "${GREEN}$test_name: $message${RESET}"
else
echo -e "${RED}$test_name: $message${RESET}"
fi
}
echo "🔍 1. Проверка версий Docker и Buildx..."
if docker version >/dev/null 2>&1; then
test_result "Docker" "PASS" "Docker доступен"
else
test_result "Docker" "FAIL" "Docker недоступен"
exit 1
fi
if docker buildx version >/dev/null 2>&1; then
test_result "Buildx" "PASS" "Buildx доступен"
else
test_result "Buildx" "FAIL" "Buildx недоступен"
exit 1
fi
echo ""
echo "🔍 2. Тестирование docker-check-builder..."
if make docker-check-builder >/dev/null 2>&1; then
test_result "check-builder" "PASS" "Builder существует"
else
test_result "check-builder" "PASS" "Builder не найден (ожидаемо)"
fi
echo ""
echo "🔍 3. Тестирование docker-diagnose-buildx..."
if make docker-diagnose-buildx >/dev/null 2>&1; then
test_result "diagnose" "PASS" "Диагностика работает"
else
test_result "diagnose" "FAIL" "Диагностика не работает"
fi
echo ""
echo "🔍 4. Тестирование docker-create-builder..."
echo "📦 Создание тестового builder..."
if make docker-create-builder >/dev/null 2>&1; then
test_result "create-builder" "PASS" "Builder создан успешно"
else
test_result "create-builder" "FAIL" "Не удалось создать builder"
fi
echo ""
echo "🔍 5. Проверка созданного builder..."
if make docker-check-builder >/dev/null 2>&1; then
test_result "verify-builder" "PASS" "Builder готов к работе"
else
test_result "verify-builder" "FAIL" "Builder не готов"
fi
echo ""
echo "🔍 6. Тестирование docker-reset-builder..."
if make docker-reset-builder >/dev/null 2>&1; then
test_result "reset-builder" "PASS" "Builder сброшен успешно"
else
test_result "reset-builder" "FAIL" "Не удалось сбросить builder"
fi
echo ""
echo "🔍 7. Проверка отсутствия buildx ls в коде..."
if grep -r "buildx ls" Makefile >/dev/null 2>&1; then
test_result "no-buildx-ls" "FAIL" "Найдены использования buildx ls"
else
test_result "no-buildx-ls" "PASS" "buildx ls не используется"
fi
echo ""
echo "🔍 8. Проверка использования inspect..."
if grep -r "buildx inspect" Makefile >/dev/null 2>&1; then
test_result "uses-inspect" "PASS" "Используется buildx inspect"
else
test_result "uses-inspect" "FAIL" "buildx inspect не используется"
fi
echo ""
echo "=================================="
echo "🎯 РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ"
echo "=================================="
echo ""
echo "💡 Рекомендации:"
echo " - Используйте 'make docker diagnose' при проблемах"
echo " - Используйте 'make docker reset-builder' при зависаниях"
echo " - Избегайте 'docker buildx ls' в CI/CD"
echo " - Используйте 'make docker setup-builder' для настройки"
echo ""
echo "✅ Исправления buildx проблем готовы к использованию!"