Ce document explique comment déployer le système Evil2Root Trading Bot sur DigitalOcean App Platform en utilisant une architecture de build séparée.
Le système utilise une architecture qui sépare le processus de build de l'exécution :
graph LR
A[GitHub Repository] -->|Push| B[GitHub Actions]
B -->|Copie le code| C[Droplet Builder]
C -->|Build| D[Image Docker]
D -->|Push| E[Container Registry]
E -->|Deploy| F[App Platform]
Cette architecture offre plusieurs avantages :
- Évite les problèmes de mémoire lors du build (OOM errors)
- Permet des builds plus rapides sur une machine dédiée
- Sépare les préoccupations entre build et exécution
- Plus économique sur le long terme
# Assurez-vous que le script est exécutable
chmod +x scripts/setup-builder-droplet.sh
# Exécutez le script avec votre token DigitalOcean
./scripts/setup-builder-droplet.sh VOTRE_TOKEN_DIGITALOCEANCe script va:
- Créer une Droplet DigitalOcean (serveur de build)
- Configurer un Container Registry
- Initialiser l'environnement de build
- Vous fournir les valeurs nécessaires pour les secrets GitHub
Dans votre repository GitHub, allez dans Settings > Secrets and variables > Actions et ajoutez les secrets suivants:
DIGITALOCEAN_ACCESS_TOKEN: Votre token DigitalOceanBUILDER_IP: L'adresse IP de la Droplet (fournie par le script)BUILDER_SSH_KEY: Votre clé SSH privéeBUILDER_HOST_KEY: L'empreinte de la Droplet (obtenue viassh-keyscan IP_DROPLET)
# Authentifiez-vous à DigitalOcean
doctl auth init
# Déployez l'application
doctl apps create --spec .do/app.yamlUne fois la configuration initiale terminée, le workflow devient entièrement automatique:
- Lorsque vous poussez du code sur la branche
main - GitHub Actions est déclenché automatiquement
- Le code est copié sur la Droplet builder
- L'image Docker est construite et poussée vers le Container Registry
- L'application est mise à jour sur App Platform
# Vérifiez que la Droplet fonctionne
ssh root@IP_DROPLET 'uptime'
# Vérifiez l'espace disque disponible
ssh root@IP_DROPLET 'df -h'
# Vérifiez les logs Docker
ssh root@IP_DROPLET 'docker logs -f $(docker ps -q)'ssh root@IP_DROPLET 'docker system prune -af'ssh root@IP_DROPLET '/opt/builder/build.sh'Si le build échoue sur la Droplet:
-
Vérifiez les logs:
ssh root@IP_DROPLET 'cd /opt/builder && ls -la' -
Assurez-vous que la Droplet a suffisamment de ressources:
ssh root@IP_DROPLET 'free -h && df -h'
Si le déploiement sur App Platform échoue:
-
Vérifiez que l'image existe dans le Container Registry:
doctl registry repository list-tags evil2root-registry/evil2root-ai
-
Vérifiez les logs de l'application:
APP_ID=$(doctl apps list --format ID,Spec.Name | grep evil2root-ai | awk '{print $1}') doctl apps logs $APP_ID
setup-builder-droplet.sh ne doit être exécuté qu'une seule fois lors de la configuration initiale. L'exécuter à nouveau créerait une nouvelle Droplet, ce qui n'est pas nécessaire et entraînerait des coûts supplémentaires.