-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
57 lines (44 loc) · 1.52 KB
/
Copy pathdeploy.sh
File metadata and controls
57 lines (44 loc) · 1.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/bash
# Script de déploiement pour EC2
# Ce script sera utilisé par GitHub Actions
set -e
echo "Début du déploiement..."
# Aller dans le répertoire du projet
cd ~/DevOps-MLOps || { echo "Répertoire non trouvé"; exit 1; }
# Pull les dernières modifications
echo "Récupération du code..."
git fetch origin
git reset --hard origin/main || git reset --hard origin/master
# Arrêter et supprimer l'ancien conteneur
echo "Arrêt de l'ancien conteneur..."
docker stop credit-api 2>/dev/null || true
docker rm credit-api 2>/dev/null || true
# Nettoyer les anciennes images (optionnel, pour économiser l'espace)
echo "Nettoyage des anciennes images..."
docker image prune -f || true
# Construire la nouvelle image Docker
echo "Construction de l'image Docker..."
docker build -f docker/Dockerfile -t credit-scoring-api .
# Lancer le nouveau conteneur
echo "Lancement du nouveau conteneur..."
docker run -d -p 5000:5000 --name credit-api --restart unless-stopped credit-scoring-api
# Attendre le démarrage
echo "Attente du démarrage..."
sleep 5
# Vérifier que l'API fonctionne
echo "Vérification de l'API..."
MAX_RETRIES=5
RETRY_COUNT=0
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
if curl -f http://localhost:5000/health > /dev/null 2>&1; then
echo "API démarrée avec succès!"
docker logs --tail 20 credit-api
exit 0
fi
RETRY_COUNT=$((RETRY_COUNT + 1))
echo "Tentative $RETRY_COUNT/$MAX_RETRIES..."
sleep 3
done
echo "Erreur: L'API ne répond pas après $MAX_RETRIES tentatives"
docker logs credit-api
exit 1