File size: 2,488 Bytes
2d9b352
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# Docker image and container configuration
IMAGE_NAME = api-comparator
CONTAINER_NAME = api-comparator-app
PORT = 5001

# Colors for terminal output
CYAN = \033[0;36m
RESET = \033[0m

.PHONY: help build run stop remove clean logs restart ps test lint coverage

# Display help information
help:
	@echo "$(CYAN)Available commands:$(RESET)"
	@echo "  make build    - Build Docker image"
	@echo "  make run      - Run container (builds if image doesn't exist)"
	@echo "  make stop     - Stop running container"
	@echo "  make remove   - Remove container"
	@echo "  make clean    - Remove container and image"
	@echo "  make logs     - View container logs"
	@echo "  make restart  - Restart container"
	@echo "  make ps       - Show container status"
	@echo "  make test     - Run all tests"
	@echo "  make coverage - Run tests with coverage report"

# Build Docker image
build:
	@echo "$(CYAN)Building Docker image...$(RESET)"
	docker build -t $(IMAGE_NAME) .

# Run container
run:
	@echo "$(CYAN)Checking for existing container...$(RESET)"
	@if [ "$$(docker ps -aq -f name=$(CONTAINER_NAME))" ]; then \
		echo "$(CYAN)Removing existing container...$(RESET)"; \
		docker rm -f $(CONTAINER_NAME) || true; \
	fi
	@if [ "$$(docker images -q $(IMAGE_NAME) 2> /dev/null)" = "" ]; then \
		echo "$(CYAN)Image not found, building first...$(RESET)"; \
		make build; \
	fi
	@echo "$(CYAN)Starting new container...$(RESET)"
	docker run -d \
		--name $(CONTAINER_NAME) \
		-p $(PORT):$(PORT) \
		--restart unless-stopped \
		$(IMAGE_NAME)
	@echo "$(CYAN)Container started! Access the application at http://localhost:$(PORT)$(RESET)"


# Stop container
stop:
	@echo "$(CYAN)Stopping container...$(RESET)"
	@docker stop $(CONTAINER_NAME) 2>/dev/null || true

# Remove container
remove: stop
	@echo "$(CYAN)Removing container...$(RESET)"
	@docker rm $(CONTAINER_NAME) 2>/dev/null || true

# Clean everything (container and image)
clean: remove
	@echo "$(CYAN)Removing image...$(RESET)"
	@docker rmi $(IMAGE_NAME) 2>/dev/null || true

# View container logs
logs:
	@echo "$(CYAN)Showing container logs...$(RESET)"
	@docker logs -f $(CONTAINER_NAME)

# Restart container
restart: stop run

# Show container status
ps:
	@echo "$(CYAN)Container status:$(RESET)"
	@docker ps -a --filter name=$(CONTAINER_NAME)

# Run tests
test:
	@echo "$(CYAN)Running tests...$(RESET)"
	pytest

# Run tests with coverage
coverage:
	@echo "$(CYAN)Running tests with coverage...$(RESET)"
	pytest --cov=. --cov-report=term-missing