.PHONY: help build push up down logs ps restart clean nomad-start nomad-stop nomad-status nomad-ui nomad-job-run nomad-job-stop nomad-logs build-multiarch push-multiarch # Default target help: @echo "SPORE Deployment Makefile" @echo "" @echo "Targets:" @echo " make build - Build all Docker images" @echo " make push - Build and push all Docker images to Docker Hub" @echo " make build-multiarch - Build multiarch images (amd64 & arm64)" @echo " make push-multiarch - Build and push multiarch images (amd64 & arm64)" @echo " make up - Start all services" @echo " make down - Stop all services" @echo " make logs - View logs from all services" @echo " make ps - Show service status" @echo " make restart - Restart all services" @echo " make clean - Stop services and remove data directory" @echo " make gateway-logs - View gateway logs" @echo " make ledlab-logs - View LEDLab logs" @echo " make registry-logs - View registry logs" @echo " make ui-logs - View UI logs" @echo " make mqtt-logs - View MQTT broker logs" @echo "" @echo "Nomad targets:" @echo " make nomad-start - Start Nomad locally" @echo " make nomad-stop - Stop Nomad" @echo " make nomad-status - Check Nomad status" @echo " make nomad-ui - Open Nomad UI in browser" @echo " make nomad-job-run - Deploy SPORE job to Nomad" @echo " make nomad-job-stop - Stop SPORE job in Nomad" @echo " make nomad-logs - View Nomad job logs" # Build all images build: docker compose build # Build and push all images to Docker Hub push: @echo "Building and pushing all SPORE images to Docker Hub..." @echo "Building spore-gateway..." @cd ../spore-gateway && make docker-build && make docker-push @echo "Building spore-registry..." @cd ../spore-registry && make docker-build && make docker-push @echo "Building spore-ledlab..." @cd ../spore-ledlab && make docker-build && make docker-push @echo "Building spore-ui..." @cd ../spore-ui && make docker-build && make docker-push @echo "All images pushed successfully!" # Build all images with multiarch support build-multiarch: IMAGE_TAG ?= latest build-multiarch: @echo "Building multiarch images for amd64 and arm64..." @echo "Building spore-gateway..." @cd ../spore-gateway && make docker-build-multiarch IMAGE_TAG=$(IMAGE_TAG) @echo "Building spore-registry..." @cd ../spore-registry && make docker-build-multiarch IMAGE_TAG=$(IMAGE_TAG) @echo "Building spore-ledlab..." @cd ../spore-ledlab && make docker-build-multiarch IMAGE_TAG=$(IMAGE_TAG) @echo "Building spore-ui..." @cd ../spore-ui && make docker-build-multiarch IMAGE_TAG=$(IMAGE_TAG) @echo "All multiarch images built successfully!" # Build and push all images with multiarch support push-multiarch: IMAGE_TAG ?= latest push-multiarch: @echo "Building and pushing multiarch images to Docker Hub..." @echo "Building and pushing spore-gateway..." @cd ../spore-gateway && make docker-build-multiarch IMAGE_TAG=$(IMAGE_TAG) @echo "Building and pushing spore-registry..." @cd ../spore-registry && make docker-build-multiarch IMAGE_TAG=$(IMAGE_TAG) @echo "Building and pushing spore-ledlab..." @cd ../spore-ledlab && make docker-build-multiarch IMAGE_TAG=$(IMAGE_TAG) @echo "Building and pushing spore-ui..." @cd ../spore-ui && make docker-build-multiarch IMAGE_TAG=$(IMAGE_TAG) @echo "All multiarch images pushed successfully!" # Start all services up: docker compose up -d # Stop all services down: docker compose down # View logs logs: docker compose logs -f # Show service status ps: docker compose ps # Restart all services restart: docker compose restart # Clean (stop and remove data) clean: @echo "Stopping services..." @docker compose down @echo "Removing data directory..." @rm -rf ./data/ @echo "Clean complete" # Service-specific logs gateway-logs: docker compose logs -f gateway ledlab-logs: docker compose logs -f ledlab registry-logs: docker compose logs -f registry ui-logs: docker compose logs -f ui mqtt-logs: docker compose logs -f mqtt # Nomad targets nomad-start: @echo "Starting Nomad..." @mkdir -p nomad-data @sudo nomad agent -config=./config/nomad/nomad.hcl -data-dir=$(PWD)/nomad-data @sleep 2 @echo "Nomad started at http://localhost:4646" nomad-stop: @echo "Stopping Nomad..." @pkill -f "nomad agent" || true @echo "Stopped" nomad-status: @nomad status || echo "Nomad not running" nomad-ui: @echo "Opening Nomad UI at http://localhost:4646" @xdg-open http://localhost:4646 2>/dev/null || open http://localhost:4646 2>/dev/null || echo "Please open http://localhost:4646 in your browser" nomad-job-run: @echo "Deploying SPORE job to Nomad..." @nomad job run ./nomad/spore.hcl nomad-job-stop: @echo "Stopping SPORE job in Nomad..." @nomad job stop spore nomad-logs: @echo "Showing logs for SPORE jobs..." @nomad job logs spore