-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
98 lines (70 loc) · 3.58 KB
/
makefile
File metadata and controls
98 lines (70 loc) · 3.58 KB
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
89
90
91
92
93
94
95
96
97
98
.PHONY: help up down restart logs logs-api logs-db clean build rebuild
# Variáveis
ENV_FILE=.env
# Cores para output
GREEN=\033[0;32m
YELLOW=\033[1;33m
NC=\033[0m # No Color
include $(ENV_FILE)
help: ## Mostra esta mensagem de ajuda
@echo "$(GREEN)Locksmith - Comandos disponíveis:$(NC)"
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " $(YELLOW)%-15s$(NC) %s\n", $$1, $$2}'
up: ## Inicia todos os serviços (database + api) na mesma network
@echo "$(GREEN)Iniciando serviços...$(NC)"
@docker compose -f compose.yaml --env-file $(ENV_FILE) up --build -d
@echo "$(GREEN)Todos os serviços estão rodando!$(NC)"
@echo "$(YELLOW)Use 'make logs' para ver os logs$(NC)"
@echo "$(YELLOW)Use 'make logs-db' para ver os logs do banco de dados$(NC)"
@echo "$(YELLOW)Use 'make logs-api' para ver os logs da API$(NC)"
@echo "$(YELLOW)Use 'make logs-web' para ver os logs da web$(NC)"
@echo "$(YELLOW)Use 'make logs-docs' para ver os logs da documentação$(NC)"
@echo "$(YELLOW)Use 'make open-web' para abrir a web no navegador$(NC)"
@echo "$(YELLOW)Use 'make open-api' para abrir a API no navegador$(NC)"
@echo "$(YELLOW)Use 'make open-docs' para abrir a documentação no navegador$(NC)"
down: ## Para todos os serviços
@docker compose -f compose.yaml --env-file $(ENV_FILE) down
@echo "$(GREEN)Todos os serviços foram parados$(NC)"
restart: down up ## Reinicia todos os serviços
logs: ## Mostra logs de todos os serviços
@docker compose -f compose.yaml --env-file $(ENV_FILE) logs -f
logs-api: ## Mostra logs apenas da API
@docker compose -f compose.yaml --env-file $(ENV_FILE) logs api -f
logs-web: ## Mostra logs apenas da web
@docker compose -f compose.yaml --env-file $(ENV_FILE) logs web -f
logs-db: ## Mostra logs apenas do banco de dados
@docker compose -f compose.yaml --env-file $(ENV_FILE) logs database -f
clean: down ## Para os serviços e remove volumes
@echo "$(YELLOW)Removendo volumes...$(NC)"
@docker compose -f compose.yaml --env-file $(ENV_FILE) down -v
@echo "$(GREEN)Limpeza concluída$(NC)"
build: ## Reconstrói as imagens Docker
@echo "$(GREEN)Reconstruindo imagem da API...$(NC)"
@docker compose -f compose.yaml --env-file $(ENV_FILE) build
rebuild: down build up ## Para, reconstrói e inicia todos os serviços
status: ## Mostra o status dos containers
@echo "$(GREEN)Status dos containers:$(NC)"
@docker ps -a --filter "name=database" --filter "name=api" --filter "name=web" --filter "name=proxy" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
shell-api: ## Abre shell no container da API
@docker exec -it api /bin/sh
shell-db: ## Abre shell no container do banco de dados
@docker exec -it --env-file $(ENV_FILE) database-locksmith psql -U $${POSTGRES_USER:-postgres} -d $${POSTGRES_DB:-locksmith}
prune: ## Remove containers, networks e imagens não utilizadas
@echo "$(YELLOW)Removendo recursos Docker não utilizados...$(NC)"
@docker system prune -f
@echo "$(GREEN)Limpeza do sistema concluída$(NC)"
@open http://localhost:10002
open-web: ## Abre a web no navegador
@open http://localhost:10000
open-api: ## Abre a API no navegador
@open http://localhost:10001
open-docs: ## Abre a documentação no navegador
@open http://localhost:${DOCS_PORT}
build-prod: ## Gera imagem de produção multi-arch e faz push para o Docker Hub
@echo "$(GREEN)Gerando imagem de produção (linux/amd64 + linux/arm64)...$(NC)"
@docker buildx build \
--platform linux/amd64,linux/arm64 \
-t booscaaa/locksmith:latest \
-f locksmith/Dockerfile \
. \
--push
@echo "$(GREEN)Imagem publicada: booscaaa/locksmith:latest$(NC)"