16 KiB
🎯 Docker Deployment - Expected Results
When Running ./test-docker.sh
You should see output similar to this:
🐳 H2H Docker Deployment Test
==============================
✅ Docker daemon is running
🛑 Stopping existing containers...
🏗️ Building Docker images (this may take 3-5 minutes)...
=> [backend 1/6] FROM docker.io/library/python:3.11-slim
=> [frontend 1/5] FROM docker.io/library/node:18-alpine
✅ Images built successfully
🚀 Starting services...
✅ Services started
⏳ Waiting for services to be ready...
......
📦 Container Status:
NAME STATUS PORTS
h2h-prototype-backend-1 Up X seconds 0.0.0.0:8000->8000/tcp
h2h-prototype-frontend-1 Up X seconds 0.0.0.0:5173->5173/tcp
🔍 Testing backend API...
✅ Backend responding (HTTP 200)
URL: http://localhost:8000/docs
🔍 Testing frontend...
✅ Frontend responding (HTTP 200)
URL: http://localhost:5173
🌱 Seeding database...
✅ Database seeded with test data
Users: alice@example.com, bob@example.com, charlie@example.com
Password: password123
🔐 Testing authentication...
✅ Login endpoint working
✅ Authenticated endpoints working
⛓️ Checking blockchain integration...
✅ Backend blockchain services present (5 files)
✅ Frontend blockchain hooks present (3 files)
📝 Checking logs for errors...
✅ No backend errors
✅ No frontend errors
==============================
📊 Test Summary
==============================
🌐 Access Points:
Frontend: http://localhost:5173
Backend API Docs: http://localhost:8000/docs
👤 Test Credentials:
Email: alice@example.com
Password: password123
🔧 Useful Commands:
View logs: docker compose logs -f
Stop services: docker compose down
Restart: docker compose restart
Shell access: docker compose exec backend bash
🎉 Docker deployment successful!
Next steps:
1. Open http://localhost:5173 in your browser
2. Login with test credentials
3. Check for blockchain badges (⛓️) in the UI
4. Look for 'Connect Wallet' button in header
5. Verify gas estimate panels in bet creation
Visual Verification Checklist
✅ Login Page (http://localhost:5173)
┌─────────────────────────────────────┐
│ H2H │
├─────────────────────────────────────┤
│ │
│ Login to H2H │
│ │
│ Email: [alice@example.com ] │
│ Password: [••••••••••••••••••] │
│ │
│ [ Login ] │
│ │
└─────────────────────────────────────┘
Expected: Form accepts credentials and redirects to dashboard
✅ Dashboard/Marketplace
┌─────────────────────────────────────────────────────────┐
│ H2H Dashboard Marketplace My Bets Wallet │
│ [⛓️ Connect Wallet] Alice │
├─────────────────────────────────────────────────────────┤
│ │
│ Available Bets │
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ Super Bowl Winner [OPEN] ⛓️ │ │
│ │ Sports • $100 • 1.5x / 2x │ │
│ └──────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
Expected:
- ⛓️ Blockchain badge on bet cards (if bet has blockchain_tx_hash)
- "Connect Wallet" button in header
- Navigation links working
✅ Create Bet Modal
Click "Create Bet" button:
┌─────────────────────────────────────┐
│ Create New Bet [X] │
├─────────────────────────────────────┤
│ │
│ Title: [________________] │
│ Description: [__________] │
│ Category: [Sports ▼] │
│ Stake: [$100_______] │
│ │
│ ┌─────────────────────────────┐ │
│ │ Estimated Gas Cost │ │
│ │ 0.000025 ETH ≈ $0.05 │ │
│ └─────────────────────────────┘ │
│ │
│ [Cancel] [Create Bet] │
└─────────────────────────────────────┘
Expected: Gas estimate panel appears when stake amount is entered
✅ Bet Detail Page
Click on a bet card:
┌─────────────────────────────────────────────────────────┐
│ H2H Dashboard Marketplace My Bets Wallet │
│ [⛓️ Connect Wallet] Alice │
├─────────────────────────────────────────────────────────┤
│ ← Back │
│ │
│ Super Bowl LVIII Winner │
│ Sports [OPEN] ⛓️ On-Chain [View on Explorer ↗] │
│ │
│ Details... │
│ │
│ ┌───────────────────────────────────────────┐ │
│ │ Estimated Gas Cost │ │
│ │ 0.000045 ETH ≈ $0.09 │ │
│ └───────────────────────────────────────────┘ │
│ │
│ [Accept Bet - $100] │
└─────────────────────────────────────────────────────────┘
Expected:
- Blockchain badge with Etherscan link
- Gas estimate before accept button
- Accept button triggers transaction modal
✅ Wallet Page
┌─────────────────────────────────────────────────────────┐
│ H2H Dashboard Marketplace My Bets Wallet │
│ [⛓️ 0xAb12...3456] Alice │
├─────────────────────────────────────────────────────────┤
│ │
│ 💰 Wallet Balance │
│ ┌─────────────────────────────────────────┐ │
│ │ Available Balance: $725.00 │ │
│ │ Locked in Escrow: $175.00 │ │
│ │ Total: $900.00 │ │
│ └─────────────────────────────────────────┘ │
│ │
│ ───────────────────────────────────────────── │
│ │
│ On-Chain Escrow ⛓️ │
│ ┌─────────────────────────────────────────┐ │
│ │ Locked in Smart Contract │ │
│ │ 0.08 ETH ≈ $175.00 │ │
│ │ │ │
│ │ Wallet Balance: 1.2 ETH │ │
│ │ Wallet Address: 0xAb12...3456 │ │
│ └─────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
Expected:
- On-Chain Escrow section (if wallet connected)
- Shows wallet address in header when connected
✅ Transaction Modal
When creating or accepting a bet:
┌──────────────────────────┐
│ │
│ 🔄 │
│ │
│ Confirming Transaction │
│ │
│ Please wait while your │
│ transaction is being │
│ processed... │
│ │
│ [Spinner animation] │
│ │
│ Do not close window │
│ │
└──────────────────────────┘
Then on success:
┌──────────────────────────┐
│ │
│ ✓ │
│ │
│ Transaction Confirmed! │
│ │
│ Your bet has been │
│ created on blockchain! │
│ │
│ 0xabc123...def456 │
│ [View on Explorer ↗] │
│ │
│ [Close] │
│ │
└──────────────────────────┘
Expected: Modal shows transaction progress and success state
Backend API Documentation (http://localhost:8000/docs)
┌─────────────────────────────────────────────────────────┐
│ H2H API - Swagger UI │
├─────────────────────────────────────────────────────────┤
│ │
│ Authentication │
│ POST /api/v1/auth/login │
│ POST /api/v1/auth/register │
│ │
│ Bets │
│ GET /api/v1/bets/ │
│ POST /api/v1/bets/ │
│ GET /api/v1/bets/{id} │
│ POST /api/v1/bets/{id}/accept │
│ │
│ Wallet │
│ GET /api/v1/wallet/ │
│ │
└─────────────────────────────────────────────────────────┘
Expected: Interactive API documentation with all endpoints
Container Logs
Backend Logs (docker compose logs backend)
backend-1 | INFO: Uvicorn running on http://0.0.0.0:8000
backend-1 | INFO: Started server process [1]
backend-1 | INFO: Waiting for application startup.
backend-1 | INFO: Application startup complete.
backend-1 | INFO: 127.0.0.1 - "GET /docs HTTP/1.1" 200 OK
No errors expected ✅
Frontend Logs (docker compose logs frontend)
frontend-1 |
frontend-1 | VITE v5.0.0 ready in 1234 ms
frontend-1 |
frontend-1 | ➜ Local: http://localhost:5173/
frontend-1 | ➜ Network: http://172.18.0.3:5173/
No errors expected ✅
Docker Container Status
$ docker compose ps
Expected output:
NAME IMAGE STATUS PORTS
h2h-prototype-backend-1 h2h-prototype-backend Up 2 minutes 0.0.0.0:8000->8000/tcp
h2h-prototype-frontend-1 h2h-prototype-frontend Up 2 minutes 0.0.0.0:5173->5173/tcp
Both containers should show "Up" status ✅
File Verification
$ docker compose exec backend ls -la app/blockchain/services/
Expected files:
blockchain_service.py
blockchain_indexer.py
oracle_node.py
oracle_aggregator.py
__init__.py
$ docker compose exec frontend ls -la src/blockchain/hooks/
Expected files:
useWeb3Wallet.ts
useBlockchainBet.ts
useGasEstimate.ts
Common Issues & Solutions
❌ "Cannot connect to Docker daemon"
Solution: Start Docker Desktop application
open -a Docker
# Wait for Docker to start (green icon in menu bar)
./test-docker.sh
❌ "Port already in use"
Solution: Kill processes using the ports
lsof -ti:8000 | xargs kill -9
lsof -ti:5173 | xargs kill -9
docker compose down
docker compose up -d
❌ Frontend shows blank page
Solution: Check browser console for errors, rebuild frontend
# Check logs
docker compose logs frontend
# Rebuild
docker compose build --no-cache frontend
docker compose up -d frontend
❌ Backend import errors
Solution: Rebuild with fresh dependencies
docker compose build --no-cache backend
docker compose up -d backend
❌ Database errors
Solution: Reset database volume
docker compose down -v
docker compose up -d
docker compose exec backend python seed_data.py
Success Indicators
✅ You know it's working when:
- Both containers show "Up" in
docker compose ps - http://localhost:5173 loads the login page
- http://localhost:8000/docs shows Swagger UI
- Can login with alice@example.com / password123
- See blockchain badges (⛓️) on bet cards
- "Connect Wallet" button appears in header
- Gas estimate panels show in modals
- No red errors in browser console
- Logs show no critical errors
Performance Expectations
Build Time: 3-5 minutes (first time) Startup Time: 10-30 seconds Memory Usage:
- Backend: < 200MB
- Frontend: < 500MB
Response Times:
- API calls: < 100ms
- Page loads: < 2s
- Login: < 500ms
Need help? Check DOCKER_TESTING_GUIDE.md for detailed troubleshooting!