File: //srv/rmgun_admin/admin-next/Makefile
# Configuration variables
ENV ?= local
COMPOSE_PROJECT_NAME ?= rmgun-admin
# Docker compose files
DEV_COMPOSE_FILE = dockers/local/docker-compose.yml
PROD_COMPOSE_FILE = dockers/prod/docker-compose.yml
# Set compose file and env file based on environment
ifeq ($(ENV),prod)
	COMPOSE_FILE = $(PROD_COMPOSE_FILE)
	ENV_FILE = ./secrets/prod/.env
	ENV_DIR = prod
	CONTAINER_PREFIX = rmgun-admin-prod
else ifeq ($(ENV),production)
	COMPOSE_FILE = $(PROD_COMPOSE_FILE)
	ENV_FILE = ./secrets/prod/.env
	ENV_DIR = prod
	CONTAINER_PREFIX = rmgun-admin-prod
else
	# Default to local
	COMPOSE_FILE = $(DEV_COMPOSE_FILE)
	ENV_FILE = ./secrets/local/.env
	ENV_DIR = local
	CONTAINER_PREFIX = rmgun-admin
endif
# Docker compose command with env file
DOCKER_COMPOSE = docker-compose -f $(COMPOSE_FILE) --env-file $(ENV_FILE)
.PHONY: help build up down logs clean dev prod restart test-email rebuild stop deploy start
help:
	@echo "Available commands:"
	@echo ""
	@echo "  ๐ณ Docker Commands:"
	@echo "  make build       - Build Docker images"
	@echo "  make rebuild     - Rebuild and restart all services"
	@echo "  make start       - Start all services (detached)"
	@echo "  make up          - Start all services (detached)"
	@echo "  make down        - Stop all services"
	@echo "  make stop        - Stop all services (alias for down)"
	@echo "  make restart     - Restart all services"
	@echo "  make clean       - Clean up containers and images"
	@echo "  make logs        - Show logs from all services"
	@echo ""
	@echo "  ๐ Environment Commands:"
	@echo "  make dev         - Start in development mode (attached)"
	@echo "  make prod        - Start in production mode (detached)"
	@echo "  make deploy      - Deploy to production server"
	@echo ""
	@echo "  ๐ Service-specific Commands:"
	@echo "  make nextjs-logs    - Show Next.js app logs"
	@echo "  make express-logs   - Show Express service logs"
	@echo "  make nextjs-shell   - Open shell in Next.js container"
	@echo "  make express-shell  - Open shell in Express container"
	@echo "  make test-email     - Send test email"
	@echo ""
	@echo "  ๐ฏ Environment Selection:"
	@echo "  All commands support ENV variable:"
	@echo "  ENV=local make build   (default)"
	@echo "  ENV=prod make build"
	@echo ""
	@echo "  Current ENV: $(ENV)"
	@echo "  Using: $(COMPOSE_FILE)"
# Build commands
build:
	@echo "๐จ Building $(ENV) environment..."
	$(DOCKER_COMPOSE) build
rebuild:
	@echo "๐ Rebuilding $(ENV) environment..."
	$(DOCKER_COMPOSE) down
	$(DOCKER_COMPOSE) build --no-cache
	$(DOCKER_COMPOSE) up -d
	@echo "โ
 Rebuild complete!"
# rebuild with cache
rebuild-cache:
	@echo "Rebuilding with -- no cache "
	$(DOCKER_COMPOSE) build --no-cache
	$(DOCKER_COMPOSE) up -d
# Start/Stop commands
start:
	@echo "โถ๏ธ  Starting $(ENV) environment..."
	$(DOCKER_COMPOSE) up -d
up: start
down:
	@echo "โน๏ธ  Stopping $(ENV) environment..."
	$(DOCKER_COMPOSE) down
stop: down
restart:
	@echo "๐ Restarting $(ENV) environment..."
	$(DOCKER_COMPOSE) restart
# Development/Production shortcuts
dev:
	@echo "๐จโ๐ป Starting local development environment..."
	@ENV=local $(MAKE) clean
	@ENV=local $(MAKE) build
	@docker-compose -f $(DEV_COMPOSE_FILE) --env-file ./secrets/local/.env up
prod:
	@echo "๐ Starting production environment locally..."
	@ENV=prod $(MAKE) down
	@ENV=prod $(MAKE) build
	@ENV=prod $(MAKE) up
	@echo "โ
 Production environment started!"
# Logs commands
logs:
	$(DOCKER_COMPOSE) logs -f
nextjs-logs:
	docker logs -f $(CONTAINER_PREFIX)-next
express-logs:
	docker logs -f $(CONTAINER_PREFIX)-express-service
# Shell commands
nextjs-shell:
	docker exec -it $(CONTAINER_PREFIX)-next sh
express-shell:
	docker exec -it $(CONTAINER_PREFIX)-express-service sh
# Cleanup
clean:
	@echo "๐งน Cleaning up $(ENV) environment..."
	$(DOCKER_COMPOSE) down -v
	docker rmi $(CONTAINER_PREFIX)-next $(CONTAINER_PREFIX)-express-service 2>/dev/null || true
# Testing
test-email:
	@echo "๐ง Sending test email..."
	@curl http://localhost:4000/email/test
# Deployment
deploy:
	@echo "๐ Deploying to production server..."
	@./deploy.sh
# Status check
status:
	@echo "๐ Container status for $(ENV) environment:"
	@docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep -E "$(CONTAINER_PREFIX)|NAMES" || echo "No containers running"
# Quick development reset
reset:
	@echo "๐ Resetting local development environment..."
	@ENV=local $(MAKE) clean
	@ENV=local $(MAKE) build
	@ENV=local $(MAKE) up
	@echo "โ
 Local environment reset complete!"