Files
Keith SmithandClaude Sonnet 4.5 71399e54b8 Add Docker deployment configuration
- Add Dockerfile for production (multi-stage build)
- Add Dockerfile.dev for development with hot reload
- Add docker-compose.yml with 5 services (web, mariadb, redis, celery-worker, celery-beat)
- Add docker-compose.dev.yml for development overrides
- Add .dockerignore for optimized builds
- Add docker/entrypoint.sh startup script
- Add .env.docker.example template
- Add Makefile for common commands
- Add deploy.sh for one-command deployment
- Update config/settings/selfhosted.py to support MariaDB via DATABASE_URL
- Add mysqlclient to requirements.txt for MariaDB support
- Update .gitignore to exclude .env.docker

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-26 15:59:09 -07:00

112 lines
3.0 KiB
Makefile

.PHONY: help dev dev-build prod build deploy logs logs-web logs-celery shell migrate makemigrations createsuperuser test clean stop restart status backup
# Default target
help:
@echo "KeepItGoing Server - Docker Commands"
@echo "====================================="
@echo ""
@echo "Development:"
@echo " make dev - Start development environment with live reload"
@echo " make dev-build - Rebuild and start development environment"
@echo " make shell - Access Django shell"
@echo " make test - Run tests"
@echo ""
@echo "Production:"
@echo " make prod - Start production environment"
@echo " make build - Build production containers"
@echo " make deploy - Deploy to production (pull, build, migrate, restart)"
@echo ""
@echo "Database:"
@echo " make migrate - Run database migrations"
@echo " make makemigrations - Create new migrations"
@echo " make createsuperuser - Create Django superuser"
@echo " make backup - Backup database"
@echo " make dbshell - Access MariaDB shell"
@echo ""
@echo "Logs & Monitoring:"
@echo " make logs - View all container logs"
@echo " make logs-web - View web container logs"
@echo " make logs-celery - View celery worker logs"
@echo " make status - Show container status"
@echo ""
@echo "Control:"
@echo " make stop - Stop all containers"
@echo " make restart - Restart all containers"
@echo " make clean - Stop and remove containers, networks, volumes"
@echo ""
# Development
dev:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up
dev-build:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build
# Production
prod:
docker-compose up -d
build:
docker-compose build --no-cache
deploy:
@echo "Deploying to production..."
git pull
docker-compose build
docker-compose up -d
docker-compose exec web python manage.py migrate
docker-compose exec web python manage.py collectstatic --noinput
docker-compose restart web
@echo "Deployment complete!"
@make status
# Database operations
migrate:
docker-compose exec web python manage.py migrate
makemigrations:
docker-compose exec web python manage.py makemigrations
createsuperuser:
docker-compose exec web python manage.py createsuperuser
dbshell:
docker-compose exec mariadb mysql -u keepitgoing -p keepitgoing
backup:
@echo "Creating database backup..."
@mkdir -p backups
docker-compose exec mariadb mysqldump -u root -p keepitgoing > backups/backup-$$(date +%Y%m%d-%H%M%S).sql
@echo "Backup created in backups/ directory"
# Django shell and tests
shell:
docker-compose exec web python manage.py shell
test:
docker-compose exec web python manage.py test
# Logs
logs:
docker-compose logs -f
logs-web:
docker-compose logs -f web
logs-celery:
docker-compose logs -f celery-worker
# Control
stop:
docker-compose down
restart:
docker-compose restart
status:
docker-compose ps
clean:
docker-compose down -v
@echo "Containers, networks, and volumes removed"