diff --git a/Makefile b/Makefile index a3698d2..86dda2f 100644 --- a/Makefile +++ b/Makefile @@ -33,7 +33,7 @@ DOCKER_REGISTRY ?= inecs DOCKER_VERSION ?= latest DOCKER_IMAGES := ansible-controller alt-linux astra-linux redos rhel centos alma rocky -.PHONY: role vault git docker-cmd presets controller help +.PHONY: role vault git docker presets controller help # ============================================================================= # КОМАНДЫ ДЛЯ РАБОТЫ С РОЛЯМИ @@ -353,7 +353,7 @@ git: # ============================================================================= # КОМАНДЫ ДЛЯ РАБОТЫ С DOCKER # ============================================================================= -docker-cmd: +docker: @case "$(word 2, $(MAKECMDGOALS))" in \ prepare) \ echo "🔧 Подготовка Docker образов для Docker Hub..."; \ @@ -407,36 +407,63 @@ docker-cmd: $(MAKE) docker build; \ $(MAKE) docker push; \ echo "✅ Все образы обновлены";; \ + purge) \ + echo "🧹 Полная очистка Docker..."; \ + echo "⚠️ ВНИМАНИЕ: Это удалит ВСЕ Docker данные!"; \ + echo ""; \ + read -p "Продолжить? (y/N): " confirm; \ + if [ "$$confirm" = "y" ] || [ "$$confirm" = "Y" ]; then \ + echo "🛑 Остановка всех контейнеров..."; \ + docker stop $$(docker ps -aq) 2>/dev/null || true; \ + echo "🗑️ Удаление всех контейнеров..."; \ + docker rm $$(docker ps -aq) 2>/dev/null || true; \ + echo "🗑️ Удаление всех образов..."; \ + docker rmi $$(docker images -aq) 2>/dev/null || true; \ + echo "🗑️ Удаление всех томов..."; \ + docker volume rm $$(docker volume ls -q) 2>/dev/null || true; \ + echo "🗑️ Удаление всех сетей..."; \ + docker network rm $$(docker network ls -q) 2>/dev/null || true; \ + echo "🧹 Очистка системы..."; \ + docker system prune -af --volumes; \ + echo "✅ Docker полностью очищен"; \ + else \ + echo "❌ Очистка отменена"; \ + fi;; \ *) \ echo "🎯 Доступные команды:"; \ echo ""; \ - echo " 🔧 make docker-cmd prepare - подготовка к работе с Docker Hub"; \ + echo " 🔧 make docker prepare - подготовка к работе с Docker Hub"; \ echo " 💡 Показывает: registry, version, список образов"; \ echo " 💡 Рекомендует: docker login перед работой"; \ echo ""; \ - echo " 🐳 make docker-cmd build - собрать все Docker образы"; \ + echo " 🐳 make docker build - собрать все Docker образы"; \ echo " 💡 Собирает: ansible-controller, alt-linux, astra-linux, redos"; \ echo " 💡 Собирает: rhel, centos, alma, rocky"; \ echo " 💡 Тегирует: inecs/образ:latest"; \ echo ""; \ - echo " 📤 make docker-cmd push - отправить образы в Docker Hub"; \ + echo " 📤 make docker push - отправить образы в Docker Hub"; \ echo " 💡 Требует: docker login"; \ echo " 💡 Отправляет: все образы в registry inecs"; \ echo ""; \ - echo " 📥 make docker-cmd pull - загрузить образы из Docker Hub"; \ + echo " 📥 make docker pull - загрузить образы из Docker Hub"; \ echo " 💡 Загружает: все образы из registry inecs"; \ echo " 💡 Пропускает: отсутствующие образы"; \ echo ""; \ - echo " 🧹 make docker-cmd clean - удалить локальные образы"; \ + echo " 🧹 make docker clean - удалить локальные образы"; \ echo " 💡 Удаляет: все образы inecs/*:latest"; \ echo " 💡 Безопасно: игнорирует ошибки"; \ echo ""; \ - echo " 📊 make docker-cmd info - информация о собранных образах"; \ + echo " 📊 make docker info - информация о собранных образах"; \ echo " 💡 Показывает: размер, дата создания, теги"; \ echo ""; \ - echo " 🔄 make docker-cmd update - обновить все образы"; \ + echo " 🔄 make docker update - обновить все образы"; \ echo " 💡 Выполняет: pull + build + push"; \ - echo " 💡 Полный цикл обновления";; \ + echo " 💡 Полный цикл обновления"; \ + echo ""; \ + echo " 💥 make docker purge - ПОЛНАЯ очистка Docker"; \ + echo " ⚠️ УДАЛЯЕТ: все контейнеры, образы, тома, сети"; \ + echo " ⚠️ ОСТАНОВИТ: все запущенные контейнеры"; \ + echo " ⚠️ ТРЕБУЕТ: подтверждение пользователя";; \ esac # ============================================================================= @@ -500,13 +527,14 @@ help: @echo " make presets test - запустить тест с preset'ом" @echo "" @echo "🐳 DOCKER ОБРАЗЫ:" - @echo " make docker-cmd prepare - подготовка к работе с Docker Hub" - @echo " make docker-cmd build - собрать все Docker образы" - @echo " make docker-cmd push - отправить образы в Docker Hub" - @echo " make docker-cmd pull - загрузить образы из Docker Hub" - @echo " make docker-cmd clean - удалить локальные образы" - @echo " make docker-cmd info - информация о собранных образах" - @echo " make docker-cmd update - обновить все образы (pull + build + push)" + @echo " make docker prepare - подготовка к работе с Docker Hub" + @echo " make docker build - собрать все Docker образы" + @echo " make docker push - отправить образы в Docker Hub" + @echo " make docker pull - загрузить образы из Docker Hub" + @echo " make docker clean - удалить локальные образы" + @echo " make docker info - информация о собранных образах" + @echo " make docker update - обновить все образы (pull + build + push)" + @echo " make docker purge - ПОЛНАЯ очистка Docker (ОСТОРОЖНО!)" @echo "" @echo "🔐 VAULT (управление секретами):" @echo " make vault create - создать новый файл секретов" @@ -533,12 +561,13 @@ help: @echo " make presets list # показать все preset'ы" @echo " make presets test PRESET=etcd-patroni # тест с etcd-patroni" @echo " make role test minimal # быстрый тест" - @echo " make docker-cmd build # собрать все образы" + @echo " make docker build # собрать все образы" + @echo " make docker purge # полная очистка Docker" @echo " make vault create # создать секреты" @echo "" @echo "📖 Подробная справка: make [команда]" @echo "==========================================" # Пустые цели для совместимости -view create edit show delete lint deploy new advanced list info test build push pull clean prepare update run stop: +view create edit show delete lint deploy new advanced list info test build push pull clean prepare update run stop purge: @true