Spaces:
Sleeping
Sleeping
🐳 Docker Local Testing Guide
Guide complet pour tester l'application RTS en local avec Docker
Prérequis
Assurez-vous que Docker est installé :
docker --version
# Devrait afficher : Docker version 20.x.x ou supérieur
Si Docker n'est pas installé :
- Ubuntu/Debian :
sudo apt-get install docker.io - Mac : Télécharger Docker Desktop
- Windows : Télécharger Docker Desktop
🚀 Méthode 1 : Build et Run Simple
Étape 1 : Naviguer vers le dossier
cd /home/luigi/rts/web
Étape 2 : Build l'image Docker
docker build -t rts-game .
Explication :
-t rts-game: Donne un nom (tag) à l'image.: Utilise le Dockerfile dans le répertoire courant
Sortie attendue :
[+] Building 45.2s (10/10) FINISHED
=> [1/5] FROM docker.io/library/python:3.11-slim
=> [2/5] WORKDIR /app
=> [3/5] COPY requirements.txt .
=> [4/5] RUN pip install --no-cache-dir -r requirements.txt
=> [5/5] COPY . .
=> exporting to image
Successfully built abc123def456
Successfully tagged rts-game:latest
Étape 3 : Lancer le conteneur
docker run -p 7860:7860 rts-game
Explication :
-p 7860:7860: Map le port 7860 du conteneur vers le port 7860 de l'hôterts-game: Nom de l'image à exécuter
Étape 4 : Tester
Ouvrez votre navigateur : http://localhost:7860
Pour arrêter : Ctrl+C
🔧 Méthode 2 : Mode Détaché (Background)
Lancer en arrière-plan
docker run -d -p 7860:7860 --name rts-game-container rts-game
Explication :
-d: Mode détaché (daemon)--name rts-game-container: Nom du conteneur
Voir les logs
docker logs rts-game-container
# Ou en temps réel :
docker logs -f rts-game-container
Arrêter le conteneur
docker stop rts-game-container
Redémarrer
docker start rts-game-container
Supprimer le conteneur
docker rm rts-game-container
🛠️ Méthode 3 : Mode Développement avec Volume
Pour développer avec live reload :
docker run -d \
-p 7860:7860 \
--name rts-dev \
-v $(pwd):/app \
-e DEBUG=true \
rts-game
Explication :
-v $(pwd):/app: Monte le répertoire courant dans le conteneur-e DEBUG=true: Variable d'environnement pour debug
🧪 Méthode 4 : Avec Docker Compose (Recommandé)
Créez un fichier docker-compose.yml :
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
rts-game:
build: .
ports:
- "7860:7860"
environment:
- HOST=0.0.0.0
- PORT=7860
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:7860/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
EOF
Commandes Docker Compose
# Build et démarrer
docker-compose up -d
# Voir les logs
docker-compose logs -f
# Arrêter
docker-compose down
# Rebuild après modifications
docker-compose up -d --build
📋 Commandes Docker Utiles
Vérifier l'état
# Lister les conteneurs en cours d'exécution
docker ps
# Lister tous les conteneurs
docker ps -a
# Lister les images
docker images
Inspecter
# Détails du conteneur
docker inspect rts-game-container
# Utilisation des ressources
docker stats rts-game-container
Accéder au shell du conteneur
docker exec -it rts-game-container /bin/bash
Nettoyer
# Supprimer les conteneurs arrêtés
docker container prune
# Supprimer les images non utilisées
docker image prune
# Tout nettoyer (ATTENTION !)
docker system prune -a
🐛 Dépannage
Problème : Port déjà utilisé
# Trouver ce qui utilise le port 7860
sudo lsof -i :7860
# ou
sudo netstat -tulpn | grep 7860
# Tuer le processus
kill -9 <PID>
Problème : Build échoue
# Build avec logs détaillés
docker build -t rts-game . --progress=plain
# Build sans cache
docker build -t rts-game . --no-cache
Problème : Conteneur s'arrête immédiatement
# Voir les logs
docker logs rts-game-container
# Lancer avec shell interactif pour debug
docker run -it rts-game /bin/bash
✅ Script de Test Automatique
Créez un script docker-test.sh :
cat > docker-test.sh << 'EOF'
#!/bin/bash
echo "🐳 Testing RTS Game with Docker"
echo "================================"
# Couleurs
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# 1. Build
echo -e "\n📦 Building Docker image..."
if docker build -t rts-game . > /dev/null 2>&1; then
echo -e "${GREEN}✅ Build successful${NC}"
else
echo -e "${RED}❌ Build failed${NC}"
exit 1
fi
# 2. Run
echo -e "\n🚀 Starting container..."
docker run -d -p 7860:7860 --name rts-test rts-game > /dev/null 2>&1
# 3. Wait for startup
echo -e "\n⏳ Waiting for server to start..."
sleep 5
# 4. Test health endpoint
echo -e "\n🧪 Testing /health endpoint..."
if curl -f http://localhost:7860/health > /dev/null 2>&1; then
echo -e "${GREEN}✅ Health check passed${NC}"
else
echo -e "${RED}❌ Health check failed${NC}"
docker logs rts-test
docker stop rts-test > /dev/null 2>&1
docker rm rts-test > /dev/null 2>&1
exit 1
fi
# 5. Test main page
echo -e "\n🌐 Testing main page..."
if curl -f http://localhost:7860/ > /dev/null 2>&1; then
echo -e "${GREEN}✅ Main page accessible${NC}"
else
echo -e "${RED}❌ Main page not accessible${NC}"
fi
# 6. Show logs
echo -e "\n📋 Container logs (last 10 lines):"
docker logs --tail 10 rts-test
# 7. Show container info
echo -e "\n📊 Container info:"
docker ps | grep rts-test
echo -e "\n${GREEN}✅ All tests passed!${NC}"
echo -e "\n🌐 Access the game at: http://localhost:7860"
echo -e "\nTo stop and cleanup:"
echo -e " docker stop rts-test && docker rm rts-test"
EOF
chmod +x docker-test.sh
Utiliser le script
./docker-test.sh
🎯 Checklist de Test Complet
✅ Tests de Base
# 1. Build réussit
docker build -t rts-game .
# 2. Conteneur démarre
docker run -d -p 7860:7860 --name rts-test rts-game
# 3. Health check
curl http://localhost:7860/health
# 4. Page principale
curl http://localhost:7860/
# 5. WebSocket fonctionne (via navigateur)
# Ouvrir http://localhost:7860 et vérifier la connexion
✅ Tests de Performance
# Utilisation mémoire
docker stats rts-test --no-stream
# Devrait être < 200MB
✅ Tests de Logs
# Vérifier qu'il n'y a pas d'erreurs
docker logs rts-test 2>&1 | grep -i error
# Devrait être vide
📊 Monitoring en Temps Réel
Voir l'utilisation des ressources
docker stats rts-game-container
Sortie :
CONTAINER ID NAME CPU % MEM USAGE / LIMIT NET I/O
abc123def456 rts-game-container 0.5% 150MiB / 2GiB 1.2kB / 3.4kB
🚀 Test de Charge Simple
# Installer hey (HTTP load generator)
# sudo apt-get install hey
# Test de charge
hey -n 1000 -c 10 http://localhost:7860/health
🎓 Exemples Complets
Exemple 1 : Test Rapide
cd /home/luigi/rts/web
docker build -t rts-game .
docker run -p 7860:7860 rts-game
# Ouvrir http://localhost:7860
Exemple 2 : Test avec Logs
cd /home/luigi/rts/web
docker build -t rts-game .
docker run -d -p 7860:7860 --name rts-test rts-game
docker logs -f rts-test
Exemple 3 : Test et Cleanup
cd /home/luigi/rts/web
docker build -t rts-game .
docker run -d -p 7860:7860 --name rts-test rts-game
sleep 5
curl http://localhost:7860/health
docker stop rts-test && docker rm rts-test
💡 Bonnes Pratiques
Toujours tester après modifications :
docker build -t rts-game . && docker run -p 7860:7860 rts-gameUtiliser des noms explicites :
docker run --name rts-game-v1.0 ...Vérifier les logs régulièrement :
docker logs -f <container>Nettoyer après tests :
docker stop $(docker ps -aq) docker rm $(docker ps -aq)
🎉 Résumé : Commande One-Liner
Pour un test complet en une commande :
cd /home/luigi/rts/web && \
docker build -t rts-game . && \
docker run -d -p 7860:7860 --name rts-test rts-game && \
echo "⏳ Waiting for startup..." && sleep 5 && \
curl http://localhost:7860/health && \
echo -e "\n\n✅ Docker test successful!" && \
echo "🌐 Open: http://localhost:7860" && \
echo "📋 Logs: docker logs -f rts-test" && \
echo "🛑 Stop: docker stop rts-test && docker rm rts-test"
Happy Docker Testing! 🐳🎮