- Auto pull latest code before deployment - Clean old Docker images before building new ones - Add comprehensive cleanup commands documentation - Add production deployment guide - Fix frontend serving from /var/www/html for production - Preserve build cache for faster deployments Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
4.2 KiB
4.2 KiB
Server Cleanup Commands
Before deploying a new version, you can use these commands to completely clean up old builds and free disk space.
🧹 Complete Cleanup (Nuclear Option)
Run these commands on the Ubuntu server before running deploy.sh:
# Navigate to project directory
cd /opt/solventum-image-metadata
# Stop all running containers
sudo docker-compose -f docker-compose.fastapi.yml down --remove-orphans
# Remove ALL Oliver Metadata related containers (including stopped ones)
sudo docker ps -a | grep -E "oliver|solventum-image-metadata" | awk '{print $1}' | xargs -r sudo docker rm -f
# Remove ALL Oliver Metadata related images
sudo docker images | grep -E "oliver|solventum-image-metadata" | awk '{print $3}' | xargs -r sudo docker rmi -f
# Remove ALL Oliver Metadata related volumes (⚠️ WARNING: This deletes database data!)
sudo docker volume ls | grep oliver | awk '{print $2}' | xargs -r sudo docker volume rm
# Clean Docker build cache
sudo docker builder prune -af
# Remove dangling images
sudo docker image prune -af
# Remove unused networks
sudo docker network prune -f
# Remove stopped containers
sudo docker container prune -f
🗑️ Safe Cleanup (Keeps Database & Uploads)
If you want to keep your database and uploaded files:
cd /opt/solventum-image-metadata
# Stop containers
sudo docker-compose -f docker-compose.fastapi.yml down
# Remove only old images (not volumes)
sudo docker images | grep -E "oliver|solventum-image-metadata" | awk '{print $3}' | xargs -r sudo docker rmi -f
# Clean build cache (keep last 24 hours)
sudo docker builder prune -f --filter "until=24h"
# Clean system
sudo docker system prune -f
📊 Check Disk Space
# Before cleanup
df -h /var/lib/docker
# Check Docker disk usage
sudo docker system df
# After cleanup
sudo docker system df
🔍 Verify Cleanup
# Should return no Oliver containers
sudo docker ps -a | grep -E "oliver|solventum"
# Should return no Oliver images
sudo docker images | grep -E "oliver|solventum"
# List remaining volumes (should see redis-data if you kept volumes)
sudo docker volume ls | grep oliver
🚀 Full Deployment Workflow
Complete workflow for a fresh deployment:
# 1. Navigate to project
cd /opt/solventum-image-metadata
# 2. OPTIONAL: Backup database (recommended)
sudo cp backend/data/oliver_metadata.db backend/data/oliver_metadata.db.backup-$(date +%Y%m%d-%H%M%S)
# 3. Run safe cleanup
sudo docker-compose -f docker-compose.fastapi.yml down
sudo docker images | grep -E "oliver|solventum" | awk '{print $3}' | xargs -r sudo docker rmi -f
sudo docker system prune -f
# 4. Run deployment script (includes git pull)
sudo ./deploy.sh
⚠️ WARNING: Data Loss Commands
These commands will PERMANENTLY DELETE your data:
# Delete database (cannot be recovered unless backed up)
sudo rm -rf /opt/solventum-image-metadata/backend/data/oliver_metadata.db
# Delete all uploads (cannot be recovered)
sudo rm -rf /opt/solventum-image-metadata/backend/uploads/*
# Delete all volumes (includes Redis data)
sudo docker volume rm $(sudo docker volume ls | grep oliver | awk '{print $2}')
# Delete all frontend files
sudo rm -rf /var/www/html/solventum-image-metadata/*
🔧 Troubleshooting
"Device or resource busy" error
If you get errors removing images/containers:
# Force stop all Docker processes
sudo systemctl stop docker
sudo systemctl start docker
# Then retry cleanup
sudo docker system prune -af --volumes
"Cannot remove container" error
# Find and kill process
sudo docker ps -a | grep oliver
sudo docker rm -f <container_id>
# If still stuck, restart Docker
sudo systemctl restart docker
Check what's using disk space
# Largest Docker images
sudo docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" | sort -k 3 -h
# Disk usage by container
sudo docker ps -s
# Build cache size
sudo docker builder du
📝 Notes
- The
deploy.shscript now includes automatic cleanup - Old images are removed automatically during deployment
- Build cache is preserved for faster builds (24 hour window)
- Database and uploads are preserved unless explicitly deleted
- Frontend files in
/var/www/html/are backed up to/tmp/during deployment