Introduzione

Docker Compose è uno strumento che consente di definire ed eseguire applicazioni Docker multi-contenitore.

Con Compose, definisci i servizi, le reti e i volumi dell'applicazione in un singolo file YAML, quindi esegui la rotazione dell'applicazione con un singolo comando.

Compose può essere utilizzato per diversi scopi come distribuzioni di applicazioni host singolo, test automatizzati e sviluppo locale.

Questo tutorial ti guida all'installazione dell'ultima versione di Docker Compose su CentOS 8. Tratteremo anche i concetti e i comandi base di Docker Compose.

Prerequisiti

Assicurati di aver soddisfatto i seguenti prerequisiti prima di continuare con questo tutorial:

Se desideri installare Docker Compose su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Installare Docker Compose su CentOS

Il metodo consigliato per l'installazione di Docker Compose su CentOS 8 è il download del file binario Compose dal repository GitHub di Docker.

Al momento della stesura di questo articolo, l'ultima versione stabile di Docker Compose è la versione 1.25.1. Prima di scaricare il binario Compose, visitare la pagina di rilascio del repository Compose su GitHub e verificare se è disponibile una nuova versione per il download.

Completare i seguenti passi per installare Docker Compose su CentOS 8:

Inizia scaricando il binario Componi Docker nella directory /usr/local/bin usando il seguente comando curl:

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Una volta completato il download, rendere eseguibile il binario digitando:

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

Per verificare l'installazione digitare il comando seguente per stampare la versione di Compose:

docker-compose --version

L'output sarà simile al seguente:

docker-compose version 1.25.1, build a82fef07

Introduzione a Docker Compose

In questa sezione, mostreremo come utilizzare Docker Compose per eseguire uno stack di WordPress sul tuo computer CentOS 7.

Inizia creando una nuova directory per il progetto e navigando in esso:

mkdir my_app && cd my_app

Quindi, crea un file chiamato docker-compose.yml nella directory del progetto:

vi docker-compose.yml

Incolla il seguente contenuto:

version: '3.3'

services:
  db:
    image: mysql:5.7
    restart: always
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: wordpress

  wordpress:
    image: wordpress
    restart: always
    volumes:
      - ./wp_data:/var/www/html
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: password
    depends_on:
       - db

volumes:
    db_data:
    wp_data:

Analizziamo il codice riga per riga.

La prima riga specifica la versione del file Compose. Esistono diverse versioni del formato file Compose con supporto per specifiche versioni Docker.

Successivamente, stiamo definendo due servizi db e wordpress. Ogni servizio esegue un'immagine e creerà un contenitore separato quando viene eseguita la composizione docker.

Il servizio db:

  • Usa l'immagine mysql:5.7. Se l'immagine non è presente sul tuo sistema Compose la estrarrà dal repository pubblico Docker Hub.
  • Utilizza la politica di riavvio always che indica il riavvio automatico del contenitore.
  • Crea un volume con nome db_data per rendere persistente il database.
  • Definisce le variabili di ambiente per l'immagine mysql:5.7.

Il servizio wordpress:

  • Usa l'immagine wordpress. Se l'immagine non è presente sul tuo sistema Compose la estrarrà dal repository pubblico Docker Hub.
  • Utilizza la politica di riavvio always che indica il riavvio automatico del contenitore.
  • Monta la directory wp_data sull'host all'interno del contenitore /var/lib/mysql.
  • Inoltra la porta esposta 80 sul contenitore alla porta 8080 sulla macchina host.
  • Definisce le variabili di ambiente per l'immagine wordpress.
  • L'istruzione depends_on definisce la dipendenza tra i due servizi. In questo esempio, db verrà avviato prima wordpress.

Dalla directory del progetto, avvia l'applicazione WordPress usando il seguente comando:

docker-compose up

L'output dovrebbe assomigliare a questo:

...
wordpress_1  | [ 2020-01-17 22:36:07+00:00] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.10 configured -- resuming normal operations
wordpress_1  | [ 2020-01-17 22:36:07+00:00] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
...

Compose estrae entrambe le immagini, avvia due contenitori e crea la directory wp_data nella directory del progetto.

Apri il tuo browser, digita http://TUO_IP_O_DOMINIO:8080/ e vedrai la schermata di installazione di Wordpress.

Per interrompere la composizione, premere CTRL+C. Se si desidera avviare la composizione in modalità indipendente, utilizzare il flag -d:

docker-compose up -d
Starting my_app_db_1 ... done
Starting my_app_wordpress_1 ... done

Per verificare i servizi in esecuzione utilizzare l'opzione ps:

docker-compose ps
       Name                     Command               State          Ports
----------------------------------------------------------------------------------
my_app_db_1          docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp
my_app_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8080->80/tcp

Quando Compose è in esecuzione in modalità indipendente, per interrompere il servizio digitare il seguente comando:

docker-compose stop

Per rimuovere completamente i contenitori utilizzare l'opzione down:

docker-compose down

L'utilizzo del flag --volumes rimuoverà anche i volumi di dati:

docker-compose down --volumes

Disinstallare Docker Compose

Se vuoi disinstallare Docker Compose, elimina semplicemente il file binario usando il seguente comando:

sudo rm /usr/local/bin/docker-compose

Conclusione

Hai imparato come installare e utilizzare Docker Compose su CentOS 8.