← Tutti gli episodi
Copertina di Orchestrare più container: Docker Compose
Stagione 12 · Episodio 009

Orchestrare più container: Docker Compose

25 agosto 2026 5:28
0:00 5:28

Ciao, e benvenuto nella nona puntata della dodicesima stagione. Nelle scorse puntate abbiamo accumulato tutti i pezzi: immagini, container, volumi per i dati, reti per la comunicazione, porte per l'esterno. Ma finora abbiamo immaginato di maneggiare questi pezzi uno per uno, a mano. E qui sorge un problema pratico: un'applicazione reale è fatta di più container che devono lavorare insieme, e gestirli tutti a mano diventa presto un incubo. Oggi conosciamo lo strumento che risolve questo, e che probabilmente userai ogni giorno: Docker Compose, il direttore d'orchestra dei tuoi container.

Partiamo dal problema, che diventa evidente appena si fa qualcosa di realistico. Prendi la tua applicazione tipica: ha un container per il programma, un container per il database, magari un container per un servizio di supporto, ognuno con la sua immagine, i suoi volumi per i dati, le sue connessioni di rete, le sue porte. Per avviare tutto a mano, dovresti lanciare ogni container separatamente, con una lunga sequenza di comandi ciascuno pieno di dettagli, ricordandoti a memoria tutti i volumi, le reti, i collegamenti. E dovresti rifarlo ogni volta. È lungo, noioso, e soprattutto pieno di occasioni per sbagliare, dimenticando un dettaglio. Gestire a mano un'orchestra di container è impraticabile.

Ecco l'idea di Docker Compose, semplice e potente. Invece di lanciare ogni container a mano con comandi lunghissimi, tu descrivi l'intera applicazione, con tutti i suoi container e come sono collegati, in un unico file di testo. In quel file scrivi: la mia applicazione è fatta di questo programma, che usa questa immagine ed espone questa porta, e di questo database, che usa quest'altra immagine e conserva i suoi dati in questo volume, e sono collegati su questa rete. Un solo documento che descrive tutto il sistema. E poi, con un solo comando, dici a Compose: leggi questo file e avvia tutto quanto. E Compose crea e avvia tutti i container, con i loro volumi, le loro reti, i loro collegamenti, tutto insieme, nell'ordine giusto.

Fermiamoci ad apprezzare l'eleganza di questa idea, perché riprende un tema profondo del podcast. Riprendo la nona stagione, quando parlavamo di descrivere ciò che vogliamo invece di elencare i passi per ottenerlo, il modo dichiarativo. Docker Compose è esattamente questo per un'intera applicazione: tu non dici i passi per costruire il sistema, dici come deve essere fatto il sistema, e lasci che Compose lo realizzi. Descrivi lo stato desiderato, la fotografia di come dev'essere tutto, e lo strumento si occupa di renderlo reale. È un modo di pensare potente: dichiarare il risultato voluto, invece di eseguire una procedura. E questo rende tutto più semplice, leggibile e affidabile.

Questo file che descrive l'applicazione ha un valore enorme, che va oltre la comodità di avviare le cose, e riprende l'infrastruttura come codice. Quel singolo file è, di fatto, la descrizione completa e precisa di come è composta la tua applicazione: quali pezzi ha, come sono collegati, come sono configurati. È documentazione vivente e ripetibile. Un nuovo membro del team, per capire com'è fatta l'applicazione, può leggere quel file e vedere tutto il sistema in un colpo d'occhio. E per avviare l'intera applicazione sul proprio computer, gli basta quel file e un comando: in pochi istanti ha l'intero sistema, identico, funzionante. Ricordi l'incubo del sul mio computer funziona di inizio stagione? Compose lo dissolve per interi sistemi, non solo per singoli programmi.

Voglio darti un esempio concreto, perché renda tutto tangibile. Immagina un'applicazione web tipica: un programma che serve il sito, un database che conserva i dati. Con Compose scrivi un file che descrive i due servizi: il programma, con la sua immagine e la sua porta aperta verso gli utenti; il database, con la sua immagine e il suo volume per non perdere i dati; entrambi sulla stessa rete privata, così da parlarsi per nome. Poi un solo comando, e l'intera applicazione si accende: database e programma partono, si collegano, e il sito è raggiungibile. Un altro comando, e tutto si spegne con ordine. È la vita quotidiana di chi sviluppa con Docker.

Devo darti una precisazione importante, per onestà. Compose è meraviglioso per un'applicazione fatta di più container su una singola macchina: il computer di sviluppo, o un singolo server. È perfetto per lo sviluppo e per applicazioni non gigantesche. Ma alle scale enormi di cui parlavamo nella stagione sul backend, con centinaia di container distribuiti su tante macchine, che devono crescere e ridursi da soli, servono strumenti più potenti, i veri orchestratori su larga scala che avevamo accennato. Compose è il direttore d'orchestra per un ensemble; per una sinfonia di migliaia di elementi servono strumenti più imponenti. Ma per il lavoro quotidiano, Compose è esattamente ciò che serve.

Per oggi ci fermiamo qui. Un'applicazione reale è fatta di più container, e gestirli a mano è un incubo. Docker Compose risolve questo lasciandoti descrivere l'intera applicazione, con tutti i suoi container, volumi, reti e collegamenti, in un unico file di testo, che poi avvii tutto insieme con un solo comando. È il modo dichiarativo applicato a interi sistemi: descrivi come dev'essere, e Compose lo realizza. Quel file è anche documentazione vivente e ripetibile, che dissolve il sul mio computer funziona per sistemi interi. Per le scale enormi servono orchestratori più potenti, ma per il lavoro quotidiano Compose è perfetto. Nella prossima e ultima puntata tiriamo le somme di Docker. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.