make: add docker buildx multi-arch targets (linux/amd64, linux/arm64) with setup, push, and local build

This commit is contained in:
William Valentin
2025-09-15 01:31:53 -07:00
parent b544399f9c
commit 1f0604cba6

View File

@@ -218,11 +218,35 @@ validate-config: ## Validate environment configuration
fi
# Docker targets
docker-build: ## Build Docker images
$(call info,Building Docker images...)
DOCKER_PLATFORMS := linux/amd64,linux/arm64
docker-build: ## Build Docker images (docker-compose)
$(call info,Building Docker images with docker-compose...)
docker-compose build
$(call success,Docker images built)
docker-buildx-setup: ## Ensure docker buildx builder exists and is bootstrapped
$(call info,Setting up docker buildx builder...)
@docker buildx create --name unitforge-builder --use 2>/dev/null || true
@docker buildx inspect --bootstrap
$(call success,Buildx builder ready)
docker-buildx: docker-buildx-setup ## Build and push multi-arch image (linux/amd64, linux/arm64)
$(call info,Building multi-arch image with buildx...)
@if [ -f ".env" ]; then \
REGISTRY_URL=$$(grep '^CONTAINER_REGISTRY_URL=' .env | cut -d'=' -f2 | sed 's|^https\?://||'); \
CONTAINER_TAG=$$(grep '^CONTAINER_TAG=' .env | cut -d'=' -f2); \
docker buildx build --platform $(DOCKER_PLATFORMS) -t $${REGISTRY_URL}:$${CONTAINER_TAG} -t $${REGISTRY_URL}:latest --push -f Dockerfile .; \
else \
echo -e "$(YELLOW)$(WARNING_SYMBOL)$(NC) .env file not found. Set CONTAINER_REGISTRY_URL and CONTAINER_TAG to enable push."; \
fi
$(call success,Multi-arch image built and pushed)
docker-buildx-local: docker-buildx-setup ## Build for current arch locally (no push)
$(call info,Building local image for current architecture...)
docker buildx build --load -t unitforge:local -f Dockerfile .
$(call success,Local image built: unitforge:local)
# Container Registry targets
docker-tag: ## Tag Docker images with registry URL
$(call info,Tagging Docker images for registry...)