Déploiement BACKEND
Script de Déploiement Backend (Pré-production)
Ce script Bash est conçu pour automatiser le déploiement d'une application backend sur un environnement de pré-production. Il gère la mise à jour du code, la sauvegarde des versions précédentes, la configuration spécifique à l'environnement et le déploiement via Docker Compose.
🚀 Fonctionnalités
- Sauvegarde Automatique : Archive la version précédente du déploiement avant toute mise à jour.
- Clonage Git Sécurisé : Récupère la dernière version du code depuis un dépôt Git privé via SSH.
- Gestion des Variables d'Environnement : Copie le fichier
.envde la version précédente pour maintenir la configuration spécifique à l'environnement. - Déploiement Dockerisé : Construit et démarre le service Docker Compose spécifié.
🛠️ Prérequis
Avant d'exécuter ce script, assurez-vous que les éléments suivants sont configurés sur le serveur de déploiement :
- Git : Installé et configuré.
- Docker & Docker Compose : Installés.
- Clé SSH : Une clé SSH (
brian_gitdans l'exemple) doit être configurée pour accéder au dépôt Git (git@github.com:Eiffage-AFC/WegoBackend.git). Le chemin de la clé est spécifié par la variableSSH_KEY. - Permissions
sudo: L'utilisateur exécutant le script doit avoir les permissionssudopour les opérations de création de répertoire, déplacement de fichiers, clonage Git et commandes Docker.
⚙️ Variables Clés
Modifiez ces variables au début du script pour l'adapter à votre projet :
FRONT_REPO: URL SSH du dépôt Git de votre backend.BRANCH: Branche Git à déployer (par exemple,preprodoumain).DEPLOY_DIR: Chemin absolu où l'application sera déployée sur le serveur.DOCKER_SERVICE: Nom du service Docker à construire et démarrer (défini dans votredocker-compose.yml).PREV_DIR: Répertoire où les sauvegardes des déploiements précédents seront stockées.SSH_KEY: Chemin vers la clé SSH privée utilisée pour l'authentification Git.
📝 Étapes du Déploiement
- Préparation du dossier de sauvegarde : Crée un répertoire pour stocker les anciennes versions du déploiement.
- Sauvegarde : Si une version de l'application est déjà présente dans
DEPLOY_DIR, elle est déplacée versPREV_DIRavec un horodatage pour backup. - Clonage du dépôt : Le script clone la branche spécifiée (
preprod) du dépôt Git vers leDEPLOY_DIR. L'authentification SSH est utilisée. - Configuration de l'environnement : Le fichier
.envde la version précédente sauvegardée est copié dans le nouveau dossier de déploiement. (Il est essentiel que le.envde la première installation soit présent dans le dossierprevpour être copié). - Build et Déploiement Docker : Le script navigue vers le
DEPLOY_DIR, construit l'image Docker du service spécifié et démarre (ou redémarre) le conteneur en mode détaché.
💡 Utilisation
Pour exécuter ce script, connectez-vous à votre serveur cible via SSH et lancez-le :
bash nom_du_script.sh
#!/bin/bash
# -----------------------------
# Déploiement BAKCEND Angular (SSH)
# -----------------------------
# Variables
FRONT_REPO="git@github.com:Eiffage-AFC/WegoBackend.git"
BRANCH="preprod"
DEPLOY_DIR="/var/wego/WegoBackend"
DOCKER_SERVICE="backend"
PREV_DIR="/var/wego/prev/backend"
TIMESTAMP=$(date +%d%m%Y)
SSH_KEY="$HOME/.ssh/brian_git"
echo "?? Début du déploiement BACKEND"
# 0?? Préparer le dossier prev pour les backups
sudo mkdir -p "$PREV_DIR"
# 1?? Sauvegarder l'ancienne préprod si elle existe
if [ -d "$DEPLOY_DIR" ]; then
echo "?? Sauvegarde de l'ancienne préprod dans $PREV_DIR/$TIMESTAMP"
sudo mv "$DEPLOY_DIR" "$PREV_DIR/$TIMESTAMP/"
fi
# 2?? Cloner la branche preprod depuis Git via SSH
echo "?? Clonage de la branche $BRANCH via SSH"
sudo GIT_SSH_COMMAND="ssh -i $SSH_KEY -o StrictHostKeyChecking=no" git clone -b "$BRANCH" "$FRONT_REPO" "$DEPLOY_DIR"
# 3?? Configuration Backend pour la production
sudo cp "$PREV_DIR/$TIMESTAMP/.env" "$DEPLOY_DIR/.env"
echo "Fichier .env Sauvegarder"
# 4?? Build Docker et déploiement
echo "?? Build Docker et démarrage du service $DOCKER_SERVICE"
cd "$DEPLOY_DIR"
sudo docker compose build "$DOCKER_SERVICE"
sudo docker compose up -d "$DOCKER_SERVICE"
echo "? Déploiement Backend terminé !"
No comments to display
No comments to display