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."