solventum-image-metadata/CLEANUP-COMMANDS.md
SamoilenkoVadym 77494488d5 feat(deploy): add auto git pull and cleanup to deployment script
- 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>
2026-02-09 15:40:11 +00:00

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.sh script 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