# Variables IMAGE_NAME = predictor TAG = latest COMPOSE_FILE = docker-compose.yml # Validate Docker configuration .PHONY: validate-docker validate-docker: ./scripts/validate-docker.sh # Build the Docker image .PHONY: build build: docker build -t $(IMAGE_NAME):$(TAG) . # Run the application with docker-compose .PHONY: up up: docker-compose -f $(COMPOSE_FILE) up -d # Run the application with docker-compose and rebuild .PHONY: up-build up-build: docker-compose -f $(COMPOSE_FILE) up -d --build # Stop the application .PHONY: down down: docker-compose -f $(COMPOSE_FILE) down # Stop the application and remove volumes .PHONY: down-volumes down-volumes: docker-compose -f $(COMPOSE_FILE) down -v # View logs .PHONY: logs logs: docker-compose -f $(COMPOSE_FILE) logs -f # View logs for specific service .PHONY: logs-predictor logs-predictor: docker-compose -f $(COMPOSE_FILE) logs -f predictor # View logs for Redis .PHONY: logs-redis logs-redis: docker-compose -f $(COMPOSE_FILE) logs -f redis # Check service status .PHONY: ps ps: docker-compose -f $(COMPOSE_FILE) ps # Execute command in predictor container .PHONY: exec exec: docker-compose -f $(COMPOSE_FILE) exec predictor sh # Execute command in Redis container .PHONY: exec-redis exec-redis: docker-compose -f $(COMPOSE_FILE) exec redis sh # Clean up Docker resources .PHONY: clean clean: docker-compose -f $(COMPOSE_FILE) down -v --rmi all docker system prune -f # Run tests .PHONY: test test: go test ./... # Build locally .PHONY: build-local build-local: go build -o predictor ./cmd/api # Run locally (requires Redis) .PHONY: run-local run-local: cd cmd/api && go run . # Format code .PHONY: fmt fmt: go fmt ./... # Lint code .PHONY: lint lint: golangci-lint run # Show help .PHONY: help help: @echo "Available commands:" @echo " validate-docker - Validate Docker configuration" @echo " build - Build Docker image" @echo " up - Start services with docker-compose" @echo " up-build - Start services and rebuild images" @echo " down - Stop services" @echo " down-volumes - Stop services and remove volumes" @echo " logs - View all logs" @echo " logs-predictor - View predictor logs" @echo " logs-redis - View Redis logs" @echo " ps - Show service status" @echo " exec - Execute shell in predictor container" @echo " exec-redis - Execute shell in Redis container" @echo " clean - Clean up Docker resources" @echo " test - Run tests" @echo " build-local - Build locally" @echo " run-local - Run locally (requires Redis)" @echo " fmt - Format code" @echo " lint - Lint code" @echo " help - Show this help" generate-ogen: go run github.com/ogen-go/ogen/cmd/ogen@latest --target pkg/rest -package gsn --clean api/rest/predictor.swagger.yml