Se gestisci più progetti containerizzati distribuiti in diverse cartelle, può diventare scomodo dover eseguire manualmente docker compose up
per ciascuno. In questo articolo ti mostro come creare uno script Bash per individuare automaticamente tutti i file docker-compose.yml
e avviare ogni progetto corrispondente.
Obiettivo
Scansionare una directory principale (e tutte le sue sottodirectory) alla ricerca di file docker-compose.yml
o docker-compose.yaml
, ed eseguire docker compose up -d
per ciascuno.
Script Bash
#!/bin/bash
# Directory principale dove cercare i progetti
ROOT_DIR="$HOME/progetti"
# Cerca tutti i file docker-compose.* e avvia i container
find "$ROOT_DIR" -type f \( -name "docker-compose.yml" -o -name "docker-compose.yaml" \) | while read -r compose_file; do
project_dir=$(dirname "$compose_file")
echo "Avvio progetto in: $project_dir"
(
cd "$project_dir" && docker compose up -d
)
done
Istruzioni per l'Uso
- Copia il codice sopra in un file chiamato, ad esempio,
avvia_progetti.sh
. - Rendi il file eseguibile:
chmod +x avvia_progetti.sh
- Esegui lo script:
./avvia_progetti.sh
Considerazioni
- Lo script utilizza
docker compose
, la nuova sintassi raccomandata al posto del comando obsoletodocker-compose
. - Puoi personalizzare
ROOT_DIR
per adattarlo al tuo sistema. - Il comando
-d
avvia i container in background. Se vuoi vedere i log, rimuovilo. - Per evitare di entrare in directory indesiderate (come
node_modules
), puoi aggiungere un filtro afind
.
Estensioni Possibili
Puoi adattare lo script anche per:
- Fermare tutti i progetti con
docker compose down
. - Verificare lo stato con
docker compose ps
. - Loggare l’output su file per eventuali errori.
Questo approccio ti permette di gestire in modo efficiente ambienti multi-progetto basati su Docker, automatizzando l'avvio e rendendo la tua postazione di sviluppo più produttiva.