4.1 KiB
4.1 KiB
🐳 Docker Quick Start
TL;DR - Run This
# 1. Make sure Docker Desktop is running (check menu bar)
# 2. Run automated test script
./test-docker.sh
# 3. Open in browser
# http://localhost:5173
Manual Steps
# Clean slate
docker compose down -v
# Build and start
docker compose build
docker compose up -d
# Watch logs
docker compose logs -f
# Stop when done
docker compose down
Test Credentials
Email: alice@example.com
Password: password123
Also available: bob@example.com, charlie@example.com
URLs
- Frontend: http://localhost:5173
- Backend API: http://localhost:8000/docs
- WebSocket: ws://localhost:8000/api/v1/ws
What to Check
In the browser at http://localhost:5173:
- ✅ Login works
- ✅ Blockchain badges (⛓️) on bet cards
- ✅ "Connect Wallet" button in header
- ✅ Gas estimate in Create Bet modal
- ✅ "On-Chain Escrow" in Wallet page
Quick Commands
# Container status
docker compose ps
# View logs
docker compose logs -f
# Restart a service
docker compose restart backend
docker compose restart frontend
# Run command in container
docker compose exec backend python seed_data.py
docker compose exec backend bash
docker compose exec frontend sh
# Stop everything
docker compose down
# Nuclear option (remove everything)
docker compose down -v && docker system prune -f
Troubleshooting
Port already in use
lsof -ti:5173 | xargs kill -9
lsof -ti:8000 | xargs kill -9
docker compose up -d
Database issues
docker compose down -v
docker compose up -d
docker compose exec backend python seed_data.py
Can't connect
# Check containers are running
docker compose ps
# Check logs for errors
docker compose logs backend | tail -50
docker compose logs frontend | tail -50
Rebuild everything
docker compose down -v
docker compose build --no-cache
docker compose up -d
File Locations in Containers
Backend Container
/app/
├── app/
│ ├── blockchain/
│ │ ├── contracts/ # Smart contract pseudocode
│ │ ├── services/ # Web3 integration
│ │ └── config.py
│ ├── models/ # Database models (with blockchain fields)
│ └── ...
└── data/
└── h2h.db # SQLite database
Frontend Container
/app/
├── src/
│ ├── blockchain/
│ │ ├── hooks/ # Web3 React hooks
│ │ └── components/ # Blockchain UI components
│ ├── components/ # Modified with blockchain features
│ └── types/ # TypeScript types
└── node_modules/
Health Check Commands
# Backend health
curl http://localhost:8000/docs
# Frontend health
curl http://localhost:5173
# Login test
curl -X POST http://localhost:8000/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "alice@example.com", "password": "password123"}'
Development Workflow
# Start services
docker compose up -d
# Make code changes in your editor
# (Changes auto-reload thanks to volume mounts)
# Watch logs
docker compose logs -f
# When done
docker compose down
Advanced: Individual Service Control
# Start only backend
docker compose up -d backend
# Start only frontend
docker compose up -d frontend
# Scale frontend (for load testing)
docker compose up -d --scale frontend=3
# Follow specific service logs
docker compose logs -f backend
Resource Monitoring
# See resource usage
docker stats
# See disk usage
docker system df
# Clean up unused images/containers
docker system prune -f
Complete Reset
If something goes wrong, nuclear option:
# Stop everything
docker compose down -v
# Remove all Docker data (CAUTION: affects all projects)
docker system prune -a --volumes -f
# Rebuild from scratch
docker compose build --no-cache
docker compose up -d
📖 For detailed guide: See DOCKER_TESTING_GUIDE.md
🤖 Automated testing: Run ./test-docker.sh