161 lines
4.3 KiB
Makefile
161 lines
4.3 KiB
Makefile
# 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
|