diff --git a/Makefile b/Makefile index b8721da..c17375a 100644 --- a/Makefile +++ b/Makefile @@ -465,6 +465,31 @@ docker: clean-builder) \ echo "🧹 Очистка multi-arch builder..."; \ $(MAKE) docker-reset-builder;; \ + build-image) \ + if [ -z "$(IMAGE)" ]; then \ + echo "❌ Ошибка: Укажите IMAGE=имя_образа"; \ + echo "💡 Пример: make docker build-image IMAGE=centos"; \ + echo "💡 Доступные образы: $(DOCKER_IMAGES)"; \ + exit 1; \ + fi; \ + if [ ! -d "dockerfiles/$(IMAGE)" ]; then \ + echo "❌ Ошибка: Директория dockerfiles/$(IMAGE) не найдена!"; \ + echo "💡 Доступные образы:"; \ + for img in $(DOCKER_IMAGES); do \ + if [ -d "dockerfiles/$$img" ]; then \ + echo " - $$img"; \ + fi; \ + done; \ + exit 1; \ + fi; \ + echo "🔨 Сборка отдельного образа: $(IMAGE)"; \ + echo "📋 Платформы: $(DOCKER_PLATFORMS)"; \ + echo "📋 Builder: $(DOCKER_BUILDX_BUILDER)"; \ + echo "📋 Registry: $(DOCKER_REGISTRY)"; \ + echo ""; \ + $(MAKE) docker setup-builder; \ + $(MAKE) docker-build-image IMAGE=$(IMAGE); \ + echo "✅ Образ $(IMAGE) собран";; \ setup-builder) \ echo "🔧 Настройка multi-arch builder в контейнере..."; \ if $(MAKE) docker-check-builder >/dev/null 2>&1; then \ @@ -701,26 +726,40 @@ docker-get-base-tag: fi; \ case "$(IMAGE)" in \ alt-linux) \ - BASE_IMAGE="altlinux/p9"; \ - TAG=$$(docker inspect --format='{{index .RepoDigests 0}}' $$BASE_IMAGE 2>/dev/null | cut -d'@' -f1 | cut -d':' -f2 || echo "latest");; \ + BASE_IMAGE="alt:p9"; \ + echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \ + docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \ + TAG=$$(docker inspect --format='{{.RepoTags}}' $$BASE_IMAGE 2>/dev/null | tr -d '[]' | cut -d',' -f1 | cut -d':' -f2 | tr -d ' ' || echo "latest");; \ astra-linux) \ - BASE_IMAGE="astralinux/astra-1.7"; \ - TAG=$$(docker inspect --format='{{index .RepoDigests 0}}' $$BASE_IMAGE 2>/dev/null | cut -d'@' -f1 | cut -d':' -f2 || echo "latest");; \ + BASE_IMAGE="registry.astralinux.ru/library/astra/ubi17:1.7.6.uu2"; \ + echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \ + docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \ + TAG=$$(docker inspect --format='{{.RepoTags}}' $$BASE_IMAGE 2>/dev/null | tr -d '[]' | cut -d',' -f1 | cut -d':' -f2 | tr -d ' ' || echo "latest");; \ redos) \ BASE_IMAGE="redos/redos:9"; \ - TAG=$$(docker inspect --format='{{index .RepoDigests 0}}' $$BASE_IMAGE 2>/dev/null | cut -d'@' -f1 | cut -d':' -f2 || echo "latest");; \ + echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \ + docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \ + TAG=$$(docker inspect --format='{{.RepoTags}}' $$BASE_IMAGE 2>/dev/null | tr -d '[]' | cut -d',' -f1 | cut -d':' -f2 | tr -d ' ' || echo "latest");; \ rhel) \ BASE_IMAGE="registry.access.redhat.com/ubi8/ubi"; \ - TAG=$$(docker inspect --format='{{index .RepoDigests 0}}' $$BASE_IMAGE 2>/dev/null | cut -d'@' -f1 | cut -d':' -f2 || echo "latest");; \ + echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \ + docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \ + TAG=$$(docker inspect --format='{{.RepoTags}}' $$BASE_IMAGE 2>/dev/null | tr -d '[]' | cut -d',' -f1 | cut -d':' -f2 | tr -d ' ' || echo "latest");; \ centos) \ BASE_IMAGE="quay.io/centos/centos:stream9"; \ - TAG=$$(docker inspect --format='{{index .RepoDigests 0}}' $$BASE_IMAGE 2>/dev/null | cut -d'@' -f1 | cut -d':' -f2 || echo "latest");; \ + echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \ + docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \ + TAG=$$(docker inspect --format='{{.RepoTags}}' $$BASE_IMAGE 2>/dev/null | tr -d '[]' | cut -d',' -f1 | cut -d':' -f2 | tr -d ' ' || echo "latest");; \ alma) \ BASE_IMAGE="almalinux:8"; \ - TAG=$$(docker inspect --format='{{index .RepoDigests 0}}' $$BASE_IMAGE 2>/dev/null | cut -d'@' -f1 | cut -d':' -f2 || echo "latest");; \ + echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \ + docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \ + TAG=$$(docker inspect --format='{{.RepoTags}}' $$BASE_IMAGE 2>/dev/null | tr -d '[]' | cut -d',' -f1 | cut -d':' -f2 | tr -d ' ' || echo "latest");; \ rocky) \ BASE_IMAGE="rockylinux:8"; \ - TAG=$$(docker inspect --format='{{index .RepoDigests 0}}' $$BASE_IMAGE 2>/dev/null | cut -d'@' -f1 | cut -d':' -f2 || echo "latest");; \ + echo "📦 Загрузка базового образа $$BASE_IMAGE..." >&2; \ + docker pull $$BASE_IMAGE >/dev/null 2>&1 || echo "⚠️ Не удалось загрузить $$BASE_IMAGE" >&2; \ + TAG=$$(docker inspect --format='{{.RepoTags}}' $$BASE_IMAGE 2>/dev/null | tr -d '[]' | cut -d',' -f1 | cut -d':' -f2 | tr -d ' ' || echo "latest");; \ ansible-controller) \ TAG="latest";; \ *) \ @@ -883,5 +922,5 @@ help: @echo "==========================================" # Пустые цели для совместимости -view create edit show delete lint deploy new advanced list info test build push pull clean prepare update run stop purge clean-builder setup-builder diagnose reset-builder: +view create edit show delete lint deploy new advanced list info test build push pull clean prepare update run stop purge clean-builder setup-builder diagnose reset-builder build-image: @true