Docker Compose è par­ti­co­lar­men­te adatto agli ambienti di sviluppo e di test, ma anche a piccole im­ple­men­ta­zio­ni di pro­du­zio­ne. Ti spie­ghia­mo come or­che­stra­re fa­cil­men­te le ap­pli­ca­zio­ni Docker Compose su Ubuntu.

Quali sono i requisiti per in­stal­la­re Docker Compose su Ubuntu?

Per uti­liz­za­re Docker Compose, occorre prima as­si­cu­rar­si che il sistema soddisfi i seguenti requisiti:

  • Docker Engine: è richiesta l’in­stal­la­zio­ne di Compose, un’esten­sio­ne di Docker Engine.
  • Sistema operativo: Ubuntu, utente sudo con permessi root.
Consiglio

È possibile uti­liz­za­re anche un sistema operativo diverso da Linux. Consulta i nostri articoli su come in­stal­la­re Docker Compose su Windows e Docker Compose su macOS.

Come in­stal­la­re Docker Compose su Ubuntu: procedura guidata

La prima cosa da fare per uti­liz­za­re Docker Compose su Ubuntu è in­stal­la­re Docker Engine sul sistema e as­si­cu­rar­si che funzioni cor­ret­ta­men­te. Non appena Docker è in funzione, puoi scaricare Compose e creare il file YAML per con­fi­gu­ra­re le ap­pli­ca­zio­ni.

Primo passaggio: scaricare e in­stal­la­re Docker Compose

Scarica l’ultima versione di Docker Compose dal re­po­si­to­ry ufficiale di GitHub inserendo il seguente comando nel terminale:

$ curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
shell

Ora puoi assegnare permessi di ese­cu­zio­ne a Docker Compose:

$ sudo chmod +x /usr/local/bin/docker-compose
shell

Mediante l’opzione --version verifichi che l’in­stal­la­zio­ne di Compose sia avvenuta con successo.

$ docker-compose --version
shell

Otterrai il seguente output:

Immagine: Versione di Docker Compose
Se vi­sua­liz­zi il numero di versione, significa che l’in­stal­la­zio­ne di Docker Compose è avvenuta con successo.

In caso di problemi nell’in­stal­la­zio­ne, controlla il percorso.

Puoi anche creare un col­le­ga­men­to simbolico al percorso /usr/bin:

$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
shell

Secondo passaggio: con­fi­gu­ra­re il file docker-compose.yml

A di­mo­stra­zio­ne della pro­get­ta­zio­ne di un file YAML di Docker Compose, im­pie­ghia­mo l’immagine di Nginx dal Docker Hub ufficiale per l’ambiente del con­te­ni­to­re.

Inizia creando una nuova cartella nella tua directory home:

$ mkdir ~/compose-test
shell

Accedi alla directory e crea una nuova sot­to­car­tel­la per la directory prin­ci­pa­le dell’ambiente Nginx.

$ cd ~/compose-test
$ mkdir app
shell

Per creare un file index.html puoi avvalerti di un qualsiasi editor di testo, come nano.

$ nano app/index.html
shell

Di seguito è riportato il codice HTML relativo a una pagina di esempio:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Docker Compose Test</title>
</head>
<body>
    <h1>This is a Docker Compose Test Page for an Nginx container.</h1>
</body>
</html>
html

Salva e chiudi il file HTML. A questo punto crea docker-compose.yml.

$ nano docker-compose.yml
shell

Il contenuto del file è suddiviso tra la versione della con­fi­gu­ra­zio­ne e il blocco dei servizi.

version: '3.9'
services:
    web:
        image: nginx:alpine
        ports:
            - "8000:80"
        volumes:
- ./app:/usr/share/nginx/html
YAML

Nel blocco dei servizi, l’unico servizio elencato è “web”. A questo si ag­giun­go­no l’immagine Nginx uti­liz­za­ta e il rein­di­riz­za­men­to della porta. Nel nostro caso, tutte le richieste sulla porta 8000 della macchina host vengono inoltrate al con­te­ni­to­re web sulla porta 80, dove è in ese­cu­zio­ne Nginx. Infine, abbiamo uti­liz­za­to un volume condiviso tra l’host e il con­te­ni­to­re. In questo modo l’ap­pli­ca­zio­ne Nginx può accedere alla cartella locale “app”.

Terzo passaggio: eseguire Docker Compose

Ci serviamo del seguente comando per creare un container web ed eseguire l’ambiente del con­te­ni­to­re in back­ground:

$ docker-compose up -d
shell

Qualora l’immagine spe­ci­fi­ca­ta nel file YAML non sia di­spo­ni­bi­le sul sistema locale, verrà scaricata au­to­ma­ti­ca­men­te.

Per ve­ri­fi­ca­re se l’ambiente Nginx è in ese­cu­zio­ne, basta immettere il comando ps.

$ docker-compose ps
shell

La pagina di esempio creata in pre­ce­den­za è ora ac­ces­si­bi­le su localhost:8000 con la demo eseguita in locale sul tuo computer. Nel caso di un server remoto, basterà inserire l’indirizzo IP del server al posto di “localhost”.

Immagine: Pagina di esempio di Docker Compose
Pagina di esempio per un container Nginx

Usando stop puoi arrestare l’ap­pli­ca­zio­ne del con­te­ni­to­re.

$ docker-compose stop
shell
Consiglio

Consulta il nostro tutorial su Docker e l’elenco dei comandi Docker, per ulteriori istru­zio­ni e in­for­ma­zio­ni utili per imparare a usare lo strumento di con­tai­ne­riz­za­zio­ne. Inoltre, in questo articolo ti spie­ghia­mo come or­che­stra­re Docker con Swarm e Compose.

Vai al menu prin­ci­pa­le