5.2 KiB
5.2 KiB
Deployment Checklist
Pre-Deployment
1. Configuration Files
- Copy
.env.exampleto.env - Update
SECRET_KEYin.envwith a secure random string - Update database password in
.env - Update database password in
docker-compose.ymlto match
2. Caddy Integration
- Find Caddy network name:
docker network ls - Update
docker-compose.ymlwith Caddy network name (lines 20 and 28-29) - Add TestArena configuration to Caddyfile
- Reload Caddy configuration
3. Security
- Generate strong SECRET_KEY (use:
python -c "import secrets; print(secrets.token_hex(32))") - Set strong database password
- Review firewall rules
- Ensure only Caddy exposes ports to internet
Deployment
4. Build and Start
- Run:
docker-compose up -d --build - Wait 30 seconds for database initialization
- Check containers are running:
docker ps - Check logs for errors:
docker-compose logs
5. Verify Services
- Database container is running
- Web container is running
- Web container is on both networks (testarena_network and caddy_network)
- No error messages in logs
6. Test Access
- Access via domain: https://testarena.nabd-co.com
- Login page loads correctly
- Logo displays properly
- CSS styles are applied
Post-Deployment
7. Initial Setup
- Login with default credentials (admin/admin123)
- Change admin password immediately
- Create test user account
- Test user login
- Verify admin can see admin dashboard
- Verify regular user cannot see admin dashboard
8. Functionality Tests
- Admin: Create new user
- Admin: Reset user password
- Admin: Delete user
- User: Access dashboard
- User: Start job submission workflow
- User: Complete all 5 steps of submission
- User: View job in dashboard
- User: Click job to see details
9. Security Hardening
- All default passwords changed
- Database not accessible from internet
- Only Caddy exposes ports
- HTTPS working correctly
- Security headers configured in Caddy
10. Monitoring Setup
- Set up log rotation
- Configure backup schedule for database
- Set up monitoring alerts
- Document backup restoration procedure
Verification Commands
# Check all containers
docker ps
# Check logs
docker-compose logs -f
# Check web container networks
docker inspect testarena_web | grep -A 10 Networks
# Check database connection
docker exec testarena_web python -c "from app import create_app, db; app = create_app(); app.app_context().push(); print('DB OK')"
# Test HTTP response
curl -I http://localhost:5000
# Test HTTPS response
curl -I https://testarena.nabd-co.com
Rollback Plan
If deployment fails:
# Stop containers
docker-compose down
# Remove volumes (WARNING: deletes data)
docker-compose down -v
# Check for issues
docker-compose logs
# Fix configuration
# ... make changes ...
# Retry deployment
docker-compose up -d --build
Backup Procedure
Database Backup
# Create backup
docker exec testarena_db pg_dump -U testarena_user testarena > backup_$(date +%Y%m%d).sql
# Restore backup
docker exec -i testarena_db psql -U testarena_user testarena < backup_20240101.sql
Full Backup
# Backup volumes
docker run --rm -v testarena_postgres_data:/data -v $(pwd):/backup alpine tar czf /backup/db_backup.tar.gz /data
docker run --rm -v testarena_test_results:/data -v $(pwd):/backup alpine tar czf /backup/results_backup.tar.gz /data
Troubleshooting
Container won't start
- Check logs:
docker-compose logs web - Verify database is ready:
docker-compose logs db - Check environment variables in docker-compose.yml
Can't access via domain
- Verify DNS:
nslookup testarena.nabd-co.com - Check Caddy:
docker logs caddy_container_name - Verify network:
docker network inspect caddy_network
Database connection error
- Check DATABASE_URL format
- Verify database container is running
- Check database logs:
docker-compose logs db
502 Bad Gateway
- Web container not ready - wait 30 seconds
- Check web logs:
docker-compose logs web - Verify Gunicorn is running:
docker exec testarena_web ps aux
Success Criteria
✅ All containers running ✅ No errors in logs ✅ Login page accessible via HTTPS ✅ Admin can login and manage users ✅ Regular user can login and access dashboard ✅ Job submission workflow completes ✅ Jobs appear in dashboard ✅ Job details display correctly
Post-Deployment Tasks
- Document any configuration changes
- Update team on new system
- Schedule training session
- Plan Phase 2 implementation
- Set up regular maintenance schedule
Maintenance Schedule
Daily
- Check logs for errors
- Verify all containers running
Weekly
- Database backup
- Review disk usage
- Check for security updates
Monthly
- Update Docker images
- Review user accounts
- Clean up old test results (automated)
- Performance review
Support Contacts
- System Admin: [Your contact]
- Database Admin: [Your contact]
- Development Team: [Your contact]
Deployment Date: _______________ Deployed By: _______________ Verified By: _______________