Command Cheat Sheet¶
Quick reference for common commands for the New Hires Reporting System.
Docker Compose¶
Start & Stop¶
# Pull latest images
docker-compose -f docker-compose.prod.yml pull
# Start all services (foreground)
docker-compose -f docker-compose.prod.yml up
# Start all services (background)
docker-compose -f docker-compose.prod.yml up -d
# Stop all services
docker-compose -f docker-compose.prod.yml down
# Stop and remove volumes (CAREFUL - deletes data!)
docker-compose -f docker-compose.prod.yml down -v
# Restart all services
docker-compose -f docker-compose.prod.yml restart
# Restart specific service
docker-compose -f docker-compose.prod.yml restart backend
docker-compose -f docker-compose.prod.yml restart workers
Logs¶
# All logs (live)
docker-compose -f docker-compose.prod.yml logs -f
# Backend logs only
docker-compose -f docker-compose.prod.yml logs -f backend
# Workers logs only
docker-compose -f docker-compose.prod.yml logs -f workers
# Frontend logs only
docker-compose -f docker-compose.prod.yml logs -f frontend
# Last 100 lines
docker-compose -f docker-compose.prod.yml logs --tail=100 workers
# With timestamps
docker-compose -f docker-compose.prod.yml logs -f -t backend
# Since specific time
docker-compose -f docker-compose.prod.yml logs --since "2025-01-15T10:00:00" backend
Status & Health¶
# Service status
docker-compose -f docker-compose.prod.yml ps
# Resource usage
docker stats
# Health check (backend)
curl http://localhost:8000/health
# Health check (frontend)
curl -I http://localhost:8080
# Database health
docker exec newhires-db pg_isready -U newhires
Production Commands¶
# Authenticate to ECR
aws ecr get-login-password --region us-east-1 | \
docker login --username AWS --password-stdin \
878796852397.dkr.ecr.us-east-1.amazonaws.com
# Pull latest images
docker-compose -f docker-compose.prod.yml pull
# Start production
docker-compose -f docker-compose.prod.yml up -d
# Run database migrations
docker exec newhires-backend alembic upgrade head
# View production logs
docker-compose -f docker-compose.prod.yml logs -f workers
# Restart production
docker-compose -f docker-compose.prod.yml restart
# Stop production
docker-compose -f docker-compose.prod.yml down
Debugging¶
# Shell into backend container
docker exec -it newhires-backend bash
# Shell into worker container
docker exec -it newhires-workers bash
# Shell into frontend container
docker exec -it newhires-frontend sh
# View environment variables
docker exec newhires-backend env
docker exec newhires-workers env | grep AWS
# Check network
docker network inspect newhires-reporting_default
# Container details
docker inspect newhires-backend
docker inspect newhires-workers
Cleanup¶
# Remove stopped containers
docker container prune
# Remove unused images
docker image prune -a
# Remove unused volumes (CAREFUL!)
docker volume prune
# Clean everything except running containers
docker system prune -a --volumes
# Nuclear option (removes EVERYTHING including data)
docker-compose -f docker-compose.prod.yml down -v
docker system prune -a --volumes -f
Log Analysis¶
# Find errors
docker logs newhires-workers | grep -i error
# Find Bedrock API activity
docker logs newhires-workers | grep -i bedrock
# Find validation events
docker logs newhires-backend | grep -E "validation|validate"
# Count errors
docker logs newhires-workers | grep -i error | wc -l
# Check Bedrock token usage
docker logs newhires-workers | grep "tokens used"
# Export logs
docker logs newhires-backend > backend-logs.txt
docker logs newhires-workers > workers-logs.txt
docker logs newhires-frontend > frontend-logs.txt
Health Checks¶
# Backend health (pretty JSON)
curl http://localhost:8000/health | jq
# Frontend health
curl -I http://localhost:8080
# Database health
docker exec newhires-db psql -U newhires -d newhires -c "SELECT 1;"
# Worker health (check logs)
docker logs newhires-workers --tail=20
# Check from container
docker exec newhires-backend curl http://localhost:8000/health
Environment Management¶
# View current environment variables
docker exec newhires-workers env | grep AWS
docker exec newhires-backend env | grep POSTGRES
# Test configuration
docker-compose -f docker-compose.prod.yml config
# Validate docker-compose.prod.yml
docker-compose -f docker-compose.prod.yml config --quiet && echo "Valid" || echo "Invalid"
Database Operations¶
# Backup database
docker exec newhires-db pg_dump -U newhires newhires > backup_$(date +%Y%m%d).sql
# Backup database (compressed)
docker exec newhires-db pg_dump -U newhires newhires | gzip > backup_$(date +%Y%m%d).sql.gz
# Restore database
cat backup_20241124.sql | docker exec -i newhires-db psql -U newhires -d newhires
# Access database CLI
docker exec -it newhires-db psql -U newhires -d newhires
# Check job queue
docker exec newhires-db psql -U newhires -d newhires -c \
"SELECT status, COUNT(*) FROM correction_jobs GROUP BY status;"
# List tables
docker exec newhires-db psql -U newhires -d newhires -c "\dt"
Worker Management¶
# Scale workers up
docker-compose -f docker-compose.prod.yml up -d --scale workers=3
# Scale workers down
docker-compose -f docker-compose.prod.yml up -d --scale workers=1
# Check worker status
docker ps | grep newhires-workers
# View worker logs (live)
docker logs -f newhires-workers
# Check for Bedrock errors
docker logs newhires-workers | grep -i "error\|exception"
# Restart workers
docker-compose -f docker-compose.prod.yml restart workers
Network Troubleshooting¶
# Test backend from host
curl http://localhost:8000/health
# Test backend from frontend container
docker exec newhires-frontend wget -O- http://backend:8000/health
# Test backend from worker container
docker exec newhires-workers curl http://backend:8000/health
# Check ports in use
sudo netstat -tlnp | grep -E '8000|8080'
# Check Docker networks
docker network ls
docker network inspect newhires-reporting_default
Performance Monitoring¶
# Real-time resource usage
docker stats
# CPU usage only
docker stats --no-stream --format "{{.Container}}: {{.CPUPerc}}"
# Memory usage only
docker stats --no-stream --format "{{.Container}}: {{.MemUsage}}"
# Disk usage
docker system df
docker volume ls
# Database size
docker exec newhires-db psql -U newhires -d newhires -c \
"SELECT pg_size_pretty(pg_database_size('newhires'));"
File Operations¶
# Copy file to container
docker cp file.txt newhires-backend:/app/
# Copy file from container
docker cp newhires-backend:/app/file.txt ./
# View file in container
docker exec newhires-backend cat /app/file.txt
# View logs in container
docker exec newhires-backend tail -f /var/log/app.log
Quick Fixes¶
# Restart everything
docker-compose -f docker-compose.prod.yml restart
# Pull and restart
docker-compose -f docker-compose.prod.yml down
docker-compose -f docker-compose.prod.yml pull
docker-compose -f docker-compose.prod.yml up -d
# Fresh start (keeps data)
docker-compose -f docker-compose.prod.yml down
docker-compose -f docker-compose.prod.yml pull
docker-compose -f docker-compose.prod.yml up -d
docker exec newhires-backend alembic upgrade head
# Hard reset (DELETES ALL DATA!)
docker-compose -f docker-compose.prod.yml down -v
docker system prune -a
docker-compose -f docker-compose.prod.yml pull
docker-compose -f docker-compose.prod.yml up -d
docker exec newhires-backend alembic upgrade head
API Testing¶
# Health check
curl http://localhost:8000/health
# API documentation
open http://localhost:8000/docs
# Test file upload (example)
curl -X POST http://localhost:8000/api/v1/files \
-H "Content-Type: multipart/form-data" \
-F "file=@/path/to/file.txt"
# Check job status
curl http://localhost:8000/api/v1/jobs/{job_id}
AWS Bedrock Testing¶
# Test AWS credentials
docker exec newhires-workers python3 -c "
import boto3
print(boto3.client('sts').get-caller-identity())
"
# Test Bedrock access
docker exec newhires-workers python3 -c "
import boto3
client = boto3.client('bedrock-runtime', region_name='us-east-1')
print('Bedrock client created successfully')
"
# List available models
aws bedrock list-foundation-models --region us-east-1 \
--query 'modelSummaries[?contains(modelId, \`claude\`)].modelId'
# Check Bedrock token usage from logs
docker logs newhires-workers | grep "tokens used" | tail -10
Emergency Commands¶
# Kill all containers
docker kill $(docker ps -q)
# Remove all containers
docker rm $(docker ps -a -q)
# Remove all images
docker rmi $(docker images -q)
# Complete reset (DESTRUCTIVE!)
docker-compose -f docker-compose.prod.yml down -v
docker system prune -a --volumes -f
docker network prune -f
Access Points¶
# Local deployment
Frontend: http://localhost:8080
Backend: http://localhost:8000
API Docs: http://localhost:8000/docs
# Production (replace with your domain)
Frontend: https://your-domain.com
Backend: https://api.your-domain.com
API Docs: https://api.your-domain.com/docs
Quick Diagnostics Script¶
#!/bin/bash
# quick-check.sh - Run all basic checks
echo "=== Service Status ==="
docker-compose -f docker-compose.prod.yml ps
echo -e "\n=== Backend Health ==="
curl -s http://localhost:8000/health | jq
echo -e "\n=== Frontend Health ==="
curl -I http://localhost:8080
echo -e "\n=== Database Health ==="
docker exec newhires-db pg_isready -U newhires
echo -e "\n=== Resource Usage ==="
docker stats --no-stream
echo -e "\n=== Recent Worker Logs ==="
docker logs newhires-workers --tail=20
echo -e "\n=== Recent Errors ==="
docker logs newhires-workers --tail=50 | grep -i error
echo -e "\n=== Job Queue Status ==="
docker exec newhires-db psql -U newhires -d newhires -c \
"SELECT status, COUNT(*) FROM correction_jobs GROUP BY status;"
echo -e "\n=== AWS Bedrock Status ==="
docker exec newhires-workers env | grep AWS_REGION
Save as quick-check.sh, make executable with chmod +x quick-check.sh, then run with ./quick-check.sh
Update Procedure¶
# 1. Update IMAGE_TAG in .env
nano .env
# 2. Re-authenticate to ECR (if needed)
aws ecr get-login-password --region us-east-1 | \
docker login --username AWS --password-stdin \
878796852397.dkr.ecr.us-east-1.amazonaws.com
# 3. Pull new images
docker-compose -f docker-compose.prod.yml pull
# 4. Stop services
docker-compose -f docker-compose.prod.yml down
# 5. Start with new images
docker-compose -f docker-compose.prod.yml up -d
# 6. Run database migrations
docker exec newhires-backend alembic upgrade head
# 7. Verify health
curl http://localhost:8000/health
docker-compose -f docker-compose.prod.yml logs --tail=50
Keyboard Shortcuts (Browser)¶
Ctrl + Shift + R - Hard refresh (clear cache)
F12 - Open developer console
Ctrl + Shift + I - Open developer tools
Ctrl + R - Refresh page
Esc - Stop loading