diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4b1934c --- /dev/null +++ b/Makefile @@ -0,0 +1,101 @@ +ENV ?= prod +COMPOSE_FILE = docker-compose.yml +ENV_FILE = .env.$(ENV) + +PROJECT_NAME = attendancesystem-$(ENV) +NETWORK_NAME = attendancesystem-network + +.PHONY: infra app install update reset-network nuke nuke-project + +# =============================== +# πŸ— Subir apenas INFRA +# =============================== +infra: reset-network + @echo "πŸš€ Subindo apenas INFRA ($(PROJECT_NAME))..." + docker compose \ + --project-name $(PROJECT_NAME) \ + --env-file $(ENV_FILE) \ + --profile infra \ + -f $(COMPOSE_FILE) \ + up -d + +# =============================== +# 🧹 Reset Network +# =============================== +reset-network: + @echo "🧹 Removendo rede antiga (se existir)..." + -docker network rm $(NETWORK_NAME) 2>/dev/null || true + +# =============================== +# 🧩 Subir apenas APP +# =============================== +app: + @echo "πŸš€ Subindo apenas APP ($(PROJECT_NAME))..." + docker compose \ + --project-name $(PROJECT_NAME) \ + --env-file $(ENV_FILE) \ + --profile app \ + -f $(COMPOSE_FILE) \ + up -d + +# =============================== +# πŸ”₯ Subir TUDO +# =============================== +install: + @echo "πŸš€ Subindo ambiente completo ($(PROJECT_NAME))..." + docker compose \ + --project-name $(PROJECT_NAME) \ + --env-file $(ENV_FILE) \ + --profile infra \ + --profile app \ + -f $(COMPOSE_FILE) \ + up -d + +# =============================== +# πŸ”„ Atualizar projeto +# =============================== +update: nuke-project install + +# =============================== +# πŸ’£ Limpeza TOTAL +# =============================== +nuke: + @echo "πŸ’£ Iniciando limpeza do ambiente..." + + @echo "πŸ›‘ Parando containers..." + - docker stop $$(docker ps -aq) 2>/dev/null || true + + @echo "πŸ—‘οΈ Removendo containers..." + - docker rm -f $$(docker ps -aq) 2>/dev/null || true + + @echo "πŸ“¦ Removendo volumes..." + - docker volume rm $$(docker volume ls -q) 2>/dev/null || true + + @echo "πŸ–ΌοΈ Removendo imagens..." + - docker rmi -f $$(docker images -aq) 2>/dev/null || true + + @echo "🌐 Limpando redes nΓ£o utilizadas..." + - docker network prune -f 2>/dev/null || true + + @echo "πŸ”₯ Limpeza GLOBAL concluΓ­da." + +# =============================== +# 🧹 Limpeza do projeto +# =============================== +nuke-project: + @echo "🧹 Limpando o projeto $(PROJECT_NAME)..." + + @echo "πŸ›‘ Parando e removendo containers do projeto..." + docker compose \ + --project-name $(PROJECT_NAME) \ + --env-file $(ENV_FILE) \ + --profile infra \ + --profile app \ + -f $(COMPOSE_FILE) \ + down --volumes --remove-orphans + + @echo "πŸ–ΌοΈ Removendo imagens do projeto (seventhltda)..." + - docker images --format '{{.Repository}}:{{.Tag}}' | grep '^seventhltda/' | xargs -r docker rmi -f 2>/dev/null || true + + @echo "βœ… Projeto $(PROJECT_NAME) limpo (containers, volumes, rede e imagens)." + @echo " Imagens de infraestrutura preservadas." \ No newline at end of file