Outils pour utilisateurs

Outils du site


scripts:update_containers

Mettre a jour simplement un ensemble de containers docker compose

Prérequis: Le chemin de l installation des containers docker pour ce script est le suivant

/home/$USER/docker/

Adapter le script si vous n’êtes pas dans ce schéma.


Seulement trois commandes a connaitre

docker compose pull
docker compose up -d --remove-orphans
docker image prune

On va simplifier tout ça avec un script bash

  1. Création d'un fichier contenant les noms des containers a mettre à jour (un par ligne).
  2. Création d'un script bash faisant le job.
Le fichier container.liste

Enregistrer le fichier et le script dans le dossier /home/$USER/docker/

cd /home/$USER/docker/
echo -e "container1\ncontainer2\ncontainer3" > container.liste
Le script
cd /home/$USER/docker/
touch update_containers.sh

Copier le code suivant dans le fichier update_containers.sh

#!/bin/bash

# Variables
USER=$(whoami)
BASE_PATH="/home/$USER/docker"
CONTAINER_LIST="container.liste"

# Vérifier si le fichier container.liste existe
if [[ ! -f $CONTAINER_LIST ]]; then
    echo "Erreur: Le fichier $CONTAINER_LIST est introuvable."
    exit 1
fi

# Fonction de mise à jour d'un conteneur
update_container() {
    local container_name=$1
    local container_path="$BASE_PATH/$container_name"

    if [[ ! -d $container_path ]]; then
        echo "Erreur: Le chemin $container_path n'existe pas pour le conteneur $container_name."
        return 1
    fi

    echo "=== Mise à jour du conteneur: $container_name ==="
    cd "$container_path" || return 1

    # Mettre à jour et redémarrer le conteneur
    docker compose pull
    docker compose up -d

    # Nettoyer les anciennes images
    docker image prune -f

    echo "=== Mise à jour terminée pour: $container_name ==="
}

# Boucle sur chaque conteneur dans container.liste
while IFS= read -r container_name || [[ -n "$container_name" ]]; do
    # Ignorer les lignes vides et les commentaires
    [[ -z $container_name || $container_name =~ ^# ]] && continue
    update_container "$container_name"
done < "$CONTAINER_LIST"

echo "Mise à jour de tous les conteneurs terminée."

Rendre le script exécutable

chmod +x /home/$USER/docker/update_containers.sh

Il ne reste plus qu'a se rendre dans le dossier pour exécuter le script.

cd /home/$USER/docker/ 
./update_containers.sh
scripts/update_containers.txt · Dernière modification : 2024/12/09 16:37 de jpg