# Base path for docker-compose files COMPOSE_PATH?=~/Projects/AltNet/docker-compose # Environment selection: staging or production (default) ENV?=production ENV_FILE=.env.$(ENV) # List of services (folder names) SERVICES=monitoring ai cloudstorage crm_tp crm_cf mediacenter homeautomation network backup homepage passwordmanager # Bring up all services all_up: @echo "Deploying with $(ENV) environment ($(ENV_FILE))..." @for service in $(SERVICES); do \ docker compose --env-file $(ENV_FILE) -f $(COMPOSE_PATH)/$$service/compose.yml up -d; \ done # Bring down all services all_down: @for service in $(SERVICES); do \ docker compose -f $(COMPOSE_PATH)/$$service/compose.yml down; \ done # Generic target to deploy a specific service %_up: @echo "Deploying $* with $(ENV) environment ($(ENV_FILE))..." @docker compose --env-file $(ENV_FILE) -f $(COMPOSE_PATH)/$*/compose.yml up -d # Generic target to bring down a specific service %_down: @docker compose -f $(COMPOSE_PATH)/$*/compose.yml down # Deploy staging (all services) staging: @$(MAKE) all_up ENV=staging # Deploy production (all services) production: @$(MAKE) all_up ENV=production # Staging per-service: make openwebui_up ENV=staging # Production per-service: make openwebui_up ENV=production all_stack_up: @for service in $(SERVICES); do \ docker stack deploy --env-file $(ENV_FILE) -c $(COMPOSE_PATH)/$$service/compose.yml $$service; \ done all_stack_down: @for service in $(SERVICES); do \ docker stack rm $$service; \ done %_stack_up: @docker stack deploy --env-file $(ENV_FILE) -c $(COMPOSE_PATH)/$*/compose.yml $* %_stack_down: @docker stack rm $* stack_ls: @docker node ps workGoat; docker node ps workHorse # Show current environment settings env: @echo "Active environment: $(ENV)" @echo "Env file: $(ENV_FILE)" @test -f $(ENV_FILE) && cat $(ENV_FILE) || echo "WARNING: $(ENV_FILE) not found!"