appointment_system/Makefile
2025-12-11 22:50:18 +08:00

115 lines
2.9 KiB
Makefile

# Makefile for Overseas Appointment System
# Usage: make <target>
.PHONY: help dev prod build start stop restart logs clean backup restore health
# Default target
help:
@echo "Overseas Appointment System - Docker Commands"
@echo ""
@echo "Development:"
@echo " make dev - Start development services (MySQL, Redis)"
@echo " make dev-stop - Stop development services"
@echo ""
@echo "Production:"
@echo " make prod - Start all production services"
@echo " make prod-build - Build and start production services"
@echo " make stop - Stop all services"
@echo " make restart - Restart all services"
@echo ""
@echo "Maintenance:"
@echo " make logs - View all service logs"
@echo " make logs-api - View API logs"
@echo " make logs-mysql - View MySQL logs"
@echo " make logs-redis - View Redis logs"
@echo " make logs-nginx - View Nginx logs"
@echo ""
@echo "Database:"
@echo " make backup - Create database backup"
@echo " make migrate - Run database migrations"
@echo " make seed - Run database seeders"
@echo ""
@echo "Utilities:"
@echo " make health - Check service health"
@echo " make clean - Remove all containers and volumes"
@echo " make status - Show service status"
# Development
dev:
docker-compose -f docker-compose.dev.yml up -d
@echo "Development services started!"
@echo "MySQL: localhost:3306"
@echo "Redis: localhost:6379"
dev-stop:
docker-compose -f docker-compose.dev.yml down
# Production
prod:
docker-compose up -d
prod-build:
docker-compose up -d --build
stop:
docker-compose down
restart:
docker-compose restart
# Logs
logs:
docker-compose logs -f
logs-api:
docker-compose logs -f api
logs-mysql:
docker-compose logs -f mysql
logs-redis:
docker-compose logs -f redis
logs-nginx:
docker-compose logs -f nginx
# Database operations
backup:
@echo "Creating database backup..."
docker-compose exec api sh -c 'mysqldump -h mysql -u $${DB_USER} -p$${DB_PASSWORD} $${DB_NAME} | gzip > /app/backups/backup_$$(date +%Y%m%d_%H%M%S).sql.gz'
@echo "Backup completed!"
migrate:
docker-compose exec api node src/migrations/001-create-tables.js
seed:
docker-compose exec api node src/seeders/001-seed-categories.js
docker-compose exec api node src/seeders/002-seed-admin.js
# Utilities
health:
@curl -s http://localhost:3000/health | python3 -m json.tool 2>/dev/null || curl -s http://localhost:3000/health
status:
docker-compose ps
clean:
@echo "WARNING: This will remove all containers and volumes!"
@read -p "Are you sure? (y/N): " confirm && [ "$$confirm" = "y" ] || exit 1
docker-compose down -v --remove-orphans
docker image prune -f
# Shell access
shell-api:
docker-compose exec api sh
shell-mysql:
docker-compose exec mysql mysql -u root -p
shell-redis:
docker-compose exec redis redis-cli
# Scaling
scale-api:
@read -p "Number of API instances: " count && docker-compose up -d --scale api=$$count