Files
attendance-system.install/Makefile

101 lines
2.8 KiB
Makefile

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