Non perdere le offerte a tempo limitato!

Che cos’è Docker Compose e come usarlo

Che cos’è Docker Compose e come usarlo

Docker Compose è uno strumento che ti permette di definire ed eseguire applicazioni multi-container in modo semplice e rapido. Gli sviluppatori lo usano per gestire servizi interconnessi, ad esempio combinando un’applicazione front-end con un database, così da gestire facilmente l’intero stack applicativo.

Con un unico file YAML, Docker Compose ti permette di definire tutta l’infrastruttura necessaria per creare un’applicazione, inclusi l’immagine Docker da usare, la configurazione della rete interna e i volumi persistenti da montare. Una volta definita la configurazione, puoi avviare tutti i container eseguendo il comando docker compose up.

Durante il ciclo di vita del progetto, puoi gestire i container con altri comandi di Docker Compose. Ad esempio, docker compose down arresta e rimuove tutti i servizi, mentre docker compose ps mostra i container attualmente in esecuzione definiti nel file YAML.

Per usare Docker Compose, devi avere Docker Engine e Docker CLI installati. Successivamente, installa il plugin tramite il gestore di pacchetti del tuo sistema o Homebrew. Se utilizzi Docker Desktop, questo strumento di orchestrazione è già incluso.

Continua a leggere per scoprire meglio cos’è Docker Compose e come usarlo per gestire applicazioni multi-container.

Cos’è Docker Compose

Docker Compose è uno strumento che ti permette di definire ed eseguire facilmente applicazioni Docker composte da più container. Il suo obiettivo principale è semplificare, centralizzare e unificare la gestione di più servizi.

Docker Compose si basa su un unico file YAML in cui definisci tutti gli aspetti dei container della tua applicazione: quale immagine deve usare ogni servizio, come comunicano tra loro e dove vengono salvati i dati persistenti. Questa configurazione ti permette di creare e gestire i container in modo coerente.

Come funziona Docker Compose

Docker Compose funziona definendo tre componenti principali delle applicazioni multi-container all’interno del file YAML: servizi, reti e volumi.

Quando avvii un’app a partire dal file YAML, Docker Compose scarica o crea l’immagine necessaria per avviare il servizio, ovvero il relativo container.

Successivamente, crea una rete interna che consente ai servizi di comunicare tra loro e inizializza i volumi per archiviare i dati persistenti condivisi tra i container. Inoltre, configura le variabili d’ambiente per ogni servizio, così puoi passare dati senza doverli inserire direttamente nell’immagine.

Tutte le configurazioni — inclusa l’immagine da usare, la configurazione della rete, il punto in cui montare i volumi persistenti e le variabili d’ambiente — sono definite nel file YAML. Questo significa che puoi creare e gestire tutti i container della tua applicazione partendo da un unico file.

Esempio di file YAML di Docker Compose

Ecco un esempio reale di file YAML di Docker Compose che definisce un progetto composto da due servizi interconnessi: una semplice applicazione web e un’istanza di cache Redis.

Per capire meglio la configurazione, consulta i commenti per capire cosa fa ogni riga.

services:

  web: # Servizio per l'applicazione web

    build: . # Crea l'immagine dal Dockerfile nella directory corrente

    ports:

      - "8000:5000" # Mappa la porta 8000 dell'host alla porta 5000 del container

    depends_on:

      - redis # Garantisce che 'redis' venga avviato prima di 'web'

    volumes:

      - ./:/app # Monta la directory corrente nel container in /app (bind mount)

    environment:

      REDIS_HOST: ${REDIS_HOST:-redis} # Imposta REDIS_HOST dall'ambiente o usa 'redis' come valore predefinito

  redis: # Servizio per la cache Redis

    image: redis:6 # Usa l'immagine ufficiale di Redis (versione 6)

    expose:

      - "6379" # Espone la porta 6379 agli altri servizi nella rete Docker

    volumes:

      - redis_data:/data # Salva i dati di Redis in un volume con nome

volumes:

  redis_data: {} # Definisce il volume con nome per la persistenza dei dati di Redis

Tieni presente che, in base alla tua applicazione, ai servizi e alla configurazione, il contenuto del file YAML può variare.

Come installare Docker Compose

I passaggi per installare Docker Compose variano in base al tipo di applicazione Docker e al tuo sistema operativo.

Se utilizzi Docker Desktop, Compose è già preconfigurato. Se invece usi Docker CLI, puoi installare il plugin Compose dal repository ufficiale oppure scaricarlo manualmente. In questo caso, vediamo come installarlo tramite il repository ufficiale, così da semplificare gli aggiornamenti futuri.

Prima di procedere, verifica di aver configurato Docker Engine e Docker CLI. Se non l’hai ancora fatto, consulta la nostra guida all’installazione di Docker su Ubuntu per conoscere tutti i passaggi.

Dopo aver configurato Docker Engine e Docker CLI, installa Compose in base al tuo sistema operativo. Su Linux, puoi farlo tramite il gestore di pacchetti. Ad esempio, sulle distribuzioni basate su Debian esegui:

sudo apt update
sudo apt install docker-compose-plugin

Se utilizzi un sistema non basato su Debian, sostituisci apt con il gestore di pacchetti corrispondente. Ad esempio, usa dnf per le distribuzioni basate su RHEL.

Se utilizzi macOS, installa Docker Compose tramite Homebrew con il seguente comando:

brew install docker-compose

Sia su Linux che su macOS, puoi verificare che Docker Compose sia installato correttamente eseguendo:

docker compose version

Se la configurazione è corretta, vedrai il numero di versione nel terminale.

Come usare Docker Compose

Con Docker Compose puoi definire la configurazione della tua applicazione, avviare lo stack e gestirne l’intero ciclo di vita con un unico strumento.

Per capire meglio come usarlo in uno scenario reale, supponiamo di voler eseguire WordPress su Ubuntu con Docker. Ecco come funziona il flusso di lavoro.

  1. Crea un file di configurazione YAML o YML usando un editor di testo come nano. Puoi scegliere qualsiasi nome, ma è consigliabile usare quello predefinito docker-compose.yml o compose.yaml per semplificare la gestione.
  2. All’interno del file YAML, definisci le immagini Docker di WordPress e MySQL insieme alle relative impostazioni, come configurazione della rete, volumi persistenti e dipendenze.
  3. Avvia tutti i servizi WordPress e MySQL usando la configurazione definita nel file YAML eseguendo:
docker compose up
  1. Durante lo sviluppo del progetto, dovrai arrestare e rimuovere i container per aggiornamenti o manutenzione. Per farlo, esegui:
docker compose down

Puoi modificare il comportamento del comando docker compose usando dei flag. Ad esempio, se vuoi eseguire la build usando un file con un nome diverso da quello predefinito, aggiungi il flag -f o –file per specificare il file da usare:

docker compose -f your-compose-file.yaml up

Per impostazione predefinita, Docker Compose crea i container nella directory di lavoro corrente. Se vuoi distribuire l’applicazione in un’altra directory, aggiungi –project-directory e specifica il percorso:

docker compose --project-directory /full/deployment/path up

Esegui i container in background 📦

Docker Compose esegue automaticamente l’applicazione nella sessione principale del terminale. Se vuoi avviare il progetto in background, aggiungi il flag -d o –detach.

Puoi anche combinare più flag separandoli con una barra inversa (\). Ad esempio, usa questo comando per distribuire un’applicazione da un file YAML con un nome specifico in un’altra directory:

docker compose \
  -f /path/to/my-docker-compose.yaml \
  --project-directory /path/to \
  up

Quando rimuovi i container, i dati rimangono intatti perché sono associati ai volumi persistenti. Se vuoi eliminare anche i volumi, aggiungi il flag –volumes:

docker compose down --volumes

Comandi principali di Docker Compose

Oltre a up e down, esistono altri comandi utili per gestire l’intero stack dell’applicazione:

  • docker compose ps – mostra i container in esecuzione gestiti da Docker Compose. L’output include nome del container, immagine, comando, servizio, stato e porte.
  • docker compose logs – raccoglie e mostra i log di tutti i servizi nello stack. Aggiungendo il flag -f, visualizzi i log in tempo reale.
  • docker compose start – avvia container esistenti arrestati.
  • docker compose stop – arresta i container in esecuzione senza rimuoverli.
  • docker compose restart – riavvia immediatamente i container.
  • docker compose build – forza la ricostruzione delle immagini che usano la direttiva build nel file YAML. Puoi aggiungere –no-cache per una build pulita.
  • docker compose push – invia tutte le immagini create ai rispettivi registry remoti.
  • docker compose pull – scarica tutte le immagini necessarie per creare lo stack senza avviare i container.

Differenza tra Docker e Docker Compose

Docker comprende diversi concetti, strumenti e componenti, ognuno con un ruolo specifico nell’ecosistema dei container. Conoscerli ti aiuta a usare la piattaforma in modo più efficiente ed efficace.

Docker Compose fa parte di questo ecosistema ed è spesso confuso con la Docker CLI. Entrambi sono strumenti a riga di comando, ma hanno funzioni diverse.

Ecco un confronto tra Docker Compose e Docker CLI:

AspettoDocker CLIDocker Compose
UtilizzoIdeale per configurazioni con un singolo containerProgettato per applicazioni multi-container
OrchestrazioneManuale, devi gestire ogni container singolarmenteAutomatizzata, gestisci tutti i servizi da un unico file YAML
ConfigurazioneDefinita nei comandi tramite flagDefinita nel file YAML
Riutilizzabilità e portabilitàDifficile condividere configurazioni complesseFacile da versionare e riutilizzare
Sviluppo e testPoco pratico per ambienti multi-servizioIdeale per lo sviluppo locale
ProduzioneAdatto a progetti sempliciUsato anche in produzione, ma spesso sostituito da Kubernetes o Docker Swarm su larga scala
Curva di apprendimentoPiù semplice per iniziareLeggermente più complessa, ma più adatta a progetti reali

Qual è il prossimo passo dopo Docker Compose

Dopo aver imparato a usare Docker Compose, puoi gestire il tuo progetto multi-servizio in modo più semplice ed efficiente. In scenari reali, però, potresti dover lavorare direttamente sui singoli container, ad esempio per aggiungere un nuovo servizio o risolvere problemi specifici.

Per questo motivo, è importante imparare anche a creare un container Docker, così da lavorare con più sicurezza nell’intero ecosistema.

Tieni presente che Docker Compose e i container sono solo una parte della piattaforma. Man mano che il tuo progetto cresce, dovrai usare strumenti più avanzati. Ad esempio, puoi passare a Kubernetes o Docker Swarm per gestire più container in modo più affidabile.

Se vuoi distribuire un’applicazione containerizzata su un VPS di Hostinger, puoi usare la funzionalità Docker Compose Manager. Avrai a disposizione una dashboard integrata in hPanel per semplificare la distribuzione e la gestione delle applicazioni basate su Docker.

Tutti i contenuti dei tutorial presenti su questo sito web sono soggetti ai rigorosi standard editoriali e ai valori di Hostinger.

Author
L'autore

Faradilla Ayunindya

Faradilla, conosciuta anche come Ninda, è Content Marketing Specialist in Hostinger, con oltre 5 anni di esperienza nel settore e un background di 10 anni come linguista. Si dedica a rendere la tecnologia più accessibile, adattando guide complesse in tutorial chiari e facili da seguire. Nel tempo libero, quando non è impegnata a seguire le ultime tendenze del mondo tech e del digital marketing, ama approfondire temi legati alle scienze della vita o guardare video divertenti di animali. Puoi connetterti con lei su LinkedIn.

Cosa dicono i nostri clienti

Lascia un commento

Please fill the required fields.Please accept the privacy checkbox.Please fill the required fields and accept the privacy checkbox.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.