Skip to content

Commit c4e551d

Browse files
committed
ajout du script de Clément
1 parent 27813b4 commit c4e551d

File tree

1 file changed

+119
-0
lines changed

1 file changed

+119
-0
lines changed

bin/dockerTools.sh

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
#!/bin/bash
2+
#chmod +x create.sh
3+
4+
# arrete le script avec des sécurités
5+
set -euo pipefail
6+
7+
# affiche le menu de sélection d'une liste d'options passées en argument
8+
# $1 titre, $2 options
9+
input_select() {
10+
local selected=0
11+
local titre="$1"
12+
local -n OPTIONS="$2"
13+
local key
14+
15+
draw_menu() {
16+
clear
17+
echo "$titre"
18+
echo
19+
20+
for i in "${!OPTIONS[@]}"; do
21+
if [[ $i -eq $selected ]]; then
22+
echo -e " 🟢 \e[32m${OPTIONS[$i]}\e[0m"
23+
else
24+
echo -e " ⚫ \e[31m${OPTIONS[$i]}\e[0m"
25+
fi
26+
done
27+
}
28+
29+
set +e
30+
while true; do
31+
draw_menu
32+
33+
# Lit une touche sans affichage
34+
IFS= read -rsn1 key
35+
36+
# Flèches = séquence ESC + [A/[B
37+
if [[ $key == $'\x1b' ]]; then
38+
IFS= read -rsn2 key
39+
case "$key" in
40+
"[A") ((selected--)) ;; # haut
41+
"[B") ((selected++)) ;; # bas
42+
esac
43+
elif [[ $key == "" ]]; then
44+
# Entrée
45+
break
46+
fi
47+
48+
# si on dépasse les bornes, on revient au début/fin
49+
(( selected < 0 )) && selected=$((${#OPTIONS[@]} - 1))
50+
(( selected >= ${#OPTIONS[@]} )) && selected=0
51+
done
52+
53+
set -e
54+
menu_selected=$selected
55+
# option selectionnée efface le menu
56+
clear
57+
return 0
58+
}
59+
60+
mapfile -t CONTAINERS < <(docker ps -a --format "{{.Names}}")
61+
CONTAINERS+=("Tous les conteneurs")
62+
63+
input_select "Quelle contenaire choisir" CONTAINERS
64+
selectedNbPages=$menu_selected
65+
contenaire=("${CONTAINERS[$selectedNbPages]}")
66+
67+
# action demander
68+
optionAction=(
69+
"logs -f"
70+
"start"
71+
"stop"
72+
"restart"
73+
"exec -it bash"
74+
)
75+
input_select "Quelle est action que vous voulez effectuer sur $contenaire" optionAction
76+
indexSelectedAction=$menu_selected
77+
action=("${optionAction[$indexSelectedAction]}")
78+
79+
# exécuter la commande docker
80+
if [ "$contenaire" == "Tous les conteneurs" ]; then
81+
chemainCompose="./compose.dev.yaml"
82+
# log du docker compose
83+
if [ "$action" == "logs -f" ]; then
84+
docker-compose -f "$chemainCompose" logs -f
85+
elif [ "$action" == "start" ]; then
86+
docker compose --env-file .env.dev -f "$chemainCompose" up -d --build
87+
elif [ "$action" == "stop" ]; then
88+
docker compose --env-file .env.dev -f "$chemainCompose" down
89+
elif [ "$action" == "restart" ]; then
90+
docker compose --env-file .env.dev -f "$chemainCompose" down && docker compose --env-file .env.dev -f "$chemainCompose" up -d --build
91+
elif [ "$action" == "exec -it bash" ]; then
92+
echo "⚠️ Impossible d'exécuter 'exec -it bash' sur tous les conteneurs en même temps."
93+
else
94+
echo "⚠️ Action non reconnue."
95+
fi
96+
else
97+
# log du docker compose
98+
if [ "$action" == "logs -f" ]; then
99+
docker logs -f "$contenaire"
100+
101+
elif [ "$action" == "start" ]; then
102+
docker start "$contenaire"
103+
echo "✅ Le contenaire "$contenaire" a démarré."
104+
105+
elif [ "$action" == "stop" ]; then
106+
docker stop "$contenaire"
107+
echo "✅ Le contenaire "$contenaire" a été arrêté."
108+
109+
elif [ "$action" == "restart" ]; then
110+
docker restart "$contenaire"
111+
echo "✅ Le contenaire "$contenaire" a été redémarré."
112+
113+
elif [ "$action" == "exec -it bash" ]; then
114+
docker exec -it "$contenaire" sh
115+
116+
else
117+
echo "⚠️ Action non reconnue."
118+
fi
119+
fi

0 commit comments

Comments
 (0)