====== 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 =====
- Création d'un fichier contenant les noms des containers a mettre à jour (un par ligne).
- 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