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:
- Accesso effettuato come utente con privilegi sudo.
- Docker installato su CentOS 8.
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 root@IP_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 nome_utente@IP_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 nome_utente@IP_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 primawordpress
.
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.