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