Common Tasks
This page covers common operational tasks for managing FOVEA services.
Starting and Stopping Services
Start All Services
CPU mode (default):
docker compose up -d
GPU mode:
docker compose --profile gpu up -d
With logs visible:
docker compose up
Specific services only:
docker compose up -d frontend backend postgres redis
Stop Services
Stop all:
docker compose down
Stop GPU services:
docker compose --profile gpu down
Stop and remove volumes (WARNING: deletes all data):
docker compose down -v
Restart Services
Restart specific service:
docker compose restart backend
Restart all:
docker compose restart
Switch Between CPU and GPU
Switch from CPU to GPU:
docker compose down
docker compose --profile gpu up -d
Switch from GPU to CPU:
docker compose --profile gpu down
docker compose up -d
Check Service Status
docker compose ps
Shows running status and health for all services.
Viewing Logs
All Services
docker compose logs -f
Specific Service
docker compose logs -f backend
docker compose logs -f model-service
Last N Lines
docker compose logs --tail=100 backend
Without Following
docker compose logs backend
Database Operations
Run Migrations
docker compose exec backend npx prisma migrate deploy
Access PostgreSQL Shell
docker compose exec postgres psql -U fovea fovea
Backup Database
docker compose exec postgres pg_dump -U fovea fovea > backup.sql
With timestamp:
docker compose exec postgres pg_dump -U fovea fovea > backup_$(date +%Y%m%d_%H%M%S).sql
Restore Database
cat backup.sql | docker compose exec -T postgres psql -U fovea fovea
Open Prisma Studio
docker compose exec backend npx prisma studio
Access at http://localhost:5555
Reset Database
WARNING: This deletes all data.
docker compose exec backend npx prisma migrate reset
Video Management
Add Videos
Copy video files to the /data
directory:
cp /path/to/video.mp4 data/
Add Video Metadata
Create .info.json
file alongside video:
cat > data/video.info.json <<EOF
{
"title": "Video Title",
"description": "Video description"
}
EOF
Scan for New Videos
Restart backend to detect new videos:
docker compose restart backend
List Videos
ls -lh data/*.mp4
Updating Services
Pull Latest Images
docker compose pull
Rebuild Services
Rebuild all:
docker compose build
Rebuild specific service:
docker compose build backend
Rebuild without cache:
docker compose build --no-cache frontend
Update and Restart
docker compose up -d --build
Cleaning Up
Remove Stopped Containers
docker compose down
Remove Unused Docker Resources
docker system prune
Remove all (including volumes):
docker system prune -a --volumes
View Disk Usage
docker system df
Clean Specific Volume
WARNING: Deletes data in volume.
docker volume rm fovea_model-cache
Monitoring and Health
Check Container Resource Usage
docker stats
View Service Health
docker compose ps
Look for "(healthy)" status.
Test Health Endpoints
Backend:
curl http://localhost:3001/health
Model Service:
curl http://localhost:8000/health
Access Monitoring Dashboards
- Grafana: http://localhost:3002 (admin/admin)
- Prometheus: http://localhost:9090
- Bull Board: http://localhost:3001/admin/queues
Shell Access
Backend Shell
docker compose exec backend sh
Model Service Shell
CPU mode:
docker compose exec model-service bash
GPU mode:
docker compose exec model-service-gpu bash
PostgreSQL Shell
docker compose exec postgres psql -U fovea fovea
Redis Shell
docker compose exec redis redis-cli
Configuration
View Environment Variables
In container:
docker compose exec backend env
Edit Configuration
Edit .env
file in project root, then restart:
docker compose restart
View Compose Configuration
docker compose config
Shows resolved configuration with environment variable substitution.
Troubleshooting
Service Won't Start
Check logs for errors:
docker compose logs <service-name>
Port Conflicts
Find process using port:
lsof -i :5173
Kill process or change port in docker-compose.yml.
Out of Disk Space
Clean Docker resources:
docker system prune -a --volumes
Check disk usage:
df -h
Database Connection Issues
Ensure PostgreSQL is running:
docker compose ps postgres
Check logs:
docker compose logs postgres
GPU Not Detected
Ensure using GPU profile:
docker compose --profile gpu ps
Test GPU in container:
docker compose exec model-service-gpu nvidia-smi
Backup Strategy
Critical Data
Database (daily recommended):
docker compose exec postgres pg_dump -U fovea fovea | gzip > backup_$(date +%Y%m%d).sql.gz
Videos (as needed):
tar -czf videos_backup_$(date +%Y%m%d).tar.gz data/
Configuration (before changes):
cp .env .env.backup
cp docker-compose.yml docker-compose.yml.backup
Automated Backup Script
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=/path/to/backups
# Backup database
docker compose exec postgres pg_dump -U fovea fovea | gzip > $BACKUP_DIR/db_$DATE.sql.gz
# Backup Redis
docker compose exec redis redis-cli SAVE
docker cp fovea-redis-1:/data/dump.rdb $BACKUP_DIR/redis_$DATE.rdb
# Backup configuration
cp .env $BACKUP_DIR/env_$DATE
echo "Backup completed: $DATE"
Next Steps
- Monitoring: Set up monitoring and alerts
- Troubleshooting: Resolve common issues
- Configuration: Advanced configuration