# IoT PreTester V3 - Docker Management Makefile # Provides convenient shortcuts for common Docker operations .PHONY: help build up down restart logs shell-backend shell-frontend clean backup test # Default target help: @echo "IoT PreTester V3 - Docker Commands" @echo "==================================" @echo "" @echo "Setup & Build:" @echo " make setup - Initial setup (create .env, build images)" @echo " make build - Build Docker images" @echo " make rebuild - Rebuild images without cache" @echo "" @echo "Container Management:" @echo " make up - Start all containers" @echo " make down - Stop all containers" @echo " make restart - Restart all containers" @echo " make status - Show container status" @echo "" @echo "Logs & Monitoring:" @echo " make logs - View all logs (follow mode)" @echo " make logs-backend - View backend logs" @echo " make logs-frontend - View frontend logs" @echo "" @echo "Shell Access:" @echo " make shell-backend - Access backend container shell" @echo " make shell-frontend - Access frontend container shell" @echo "" @echo "Database:" @echo " make migrate - Run Django migrations" @echo " make makemigrations - Create Django migrations" @echo " make superuser - Create Django superuser (interactive)" @echo " make dbshell - Access database shell" @echo " make backup - Backup database" @echo "" @echo "Maintenance:" @echo " make clean - Remove containers and volumes" @echo " make clean-all - Remove everything (images, volumes, data)" @echo " make update - Update and restart services" @echo "" @echo "Development:" @echo " make test - Run tests" @echo " make check - Run health checks" @echo "" # Initial setup setup: @echo "Setting up IoT PreTester V3..." @if [ ! -f .env ]; then \ echo "Creating .env file from template..."; \ cp .env.example .env; \ echo "⚠️ Please edit .env and set your configuration!"; \ else \ echo ".env file already exists"; \ fi @echo "Building Docker images..." @docker-compose build @echo "✓ Setup complete!" @echo "" @echo "Next steps:" @echo "1. Edit .env file with your configuration" @echo "2. Run 'make up' to start the application" # Build images build: docker-compose build rebuild: docker-compose build --no-cache # Start/Stop containers up: docker-compose up -d @echo "Containers started!" @echo "Frontend: http://localhost:3000" @echo "Backend: http://localhost:8000/api/" @echo "" @echo "Use 'make logs' to view logs" down: docker-compose down restart: docker-compose restart status: docker-compose ps # Logs logs: docker-compose logs -f logs-backend: docker-compose logs -f backend logs-frontend: docker-compose logs -f frontend # Shell access shell-backend: docker-compose exec backend bash shell-frontend: docker-compose exec frontend sh # Django management migrate: docker-compose exec backend python django_project/manage.py migrate makemigrations: docker-compose exec backend python django_project/manage.py makemigrations superuser: docker-compose exec backend python django_project/manage.py createsuperuser dbshell: docker-compose exec backend sqlite3 /app/data/db.sqlite3 # Database backup backup: @mkdir -p backups @echo "Creating backup..." @docker-compose exec -T backend sqlite3 /app/data/db.sqlite3 .dump > backups/db_backup_$$(date +%Y%m%d_%H%M%S).sql @echo "✓ Database backup created in backups/" # Cleanup clean: docker-compose down -v @echo "✓ Containers and volumes removed" clean-all: clean docker-compose down --rmi all -v rm -rf data/ logs/ @echo "✓ Everything cleaned (images, volumes, data)" # Update update: @echo "Updating IoT PreTester V3..." git pull docker-compose build docker-compose up -d docker-compose exec backend python django_project/manage.py migrate @echo "✓ Update complete!" # Health check check: @echo "Checking container health..." @docker-compose ps @echo "" @echo "Backend health:" @curl -f http://localhost:8000/api/ 2>/dev/null && echo "✓ Backend is healthy" || echo "✗ Backend is down" @echo "" @echo "Frontend health:" @curl -f http://localhost:3000 2>/dev/null && echo "✓ Frontend is healthy" || echo "✗ Frontend is down" # Tests test: docker-compose exec backend python django_project/manage.py test