
Docker Compose è uno strumento che consente di definire e gestire applicazioni Docker multi-container. Utilizza un file YAML per configurare i servizi, le reti e i volumi dell'applicazione.
Componi può essere utilizzato per diversi scopi. Le distribuzioni di applicazioni host singole, i test automatizzati e lo sviluppo locale sono i casi d'uso più diffusi per Docker Compose.
In questo tutorial, ti mostreremo come installare l'ultima versione di Docker Compose su Ubuntu 18.04 ed esploreremo i concetti e i comandi di base di Docker Compose.
Le stesse istruzioni si applicano per Ubuntu 16.04 e qualsiasi altra distribuzione basata su Debian, inclusi Debian, Linux Mint e OS elementare.
Prerequisiti #
Assicurati di aver soddisfatto i seguenti prerequisiti prima di continuare con questo tutorial:
- Acceduto come utente con privilegi sudo.
- Fai installare Docker seguendo le istruzioni di Come installare e utilizzare Docker su Ubuntu 18.04.
Installa Docker Compose su Ubuntu #
Il pacchetto di installazione Docker Compose è disponibile nei repository ufficiali di Ubuntu 18.04 ma potrebbe non essere sempre l'ultima versione. L'approccio consigliato consiste nell'installare Docker Compose dal repository GitHub di Docker.
Al momento della stesura di questo articolo, l'ultima versione stabile di Docker Compose è la versione 1.23.1
. Prima di scaricare il binario Compose, visita la pagina di rilascio del repository Compose su GitHub e controlla se è disponibile una nuova versione per il download.
Per installare Docker Compose su Ubuntu 18.04, segui questi passaggi:
-
Scarica il file binario Docker Compose in
/usr/local/bin
directory con il seguentecurl
comando:sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
-
Una volta completato il download, applica i permessi eseguibili al binario Compose:
sudo chmod +x /usr/local/bin/docker-compose
-
Verifica l'installazione eseguendo il comando seguente che visualizzerà la versione Compose:
docker-compose --version
L'output sarà simile a questo:
docker-compose version 1.23.1, build b02f1306
Introduzione a Docker Compose #
In questa sezione mostreremo come utilizzare Docker Compose per configurare un'applicazione WordPress multi-container su Ubuntu 18.04.
Inizia creando una directory di progetto e navigando al suo interno:
mkdir my_app
cd my_app
Avvia il tuo editor di testo e crea un file chiamato docker-compose.yml
all'interno della directory del progetto:
nano docker-compose.yml
Incolla il seguente contenuto:
docker-compose.ymlversion: '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.
Nella prima riga, specifichiamo la versione del file Compose. Esistono diverse versioni del formato di file Compose con supporto per versioni Docker specifiche.
Successivamente, stiamo definendo due servizi, db
e wordpress
. Ogni servizio esegue un'immagine e creerà un contenitore separato quando viene eseguito docker-compose.
Il db
servizio:
- Utilizza
mysql:5.7
Immagine. Se l'immagine non è presente sul sistema, verrà estratta dal repository pubblico di Docker Hub. - Utilizza il riavvio
always
policy che indicherà al container di riavviarsi sempre. - Crea un volume denominato
db_data
per rendere il database persistente. - Definisce le variabili di ambiente per
mysql:5.7
immagine.
Il wordpress
servizio:
- Utilizza
wordpress
Immagine. Se l'immagine non è presente sul tuo sistema, Compose la estrarrà dal repository pubblico di Docker Hub. - Utilizza il riavvio
always
policy che indicherà al container di riavviarsi sempre. - Monta il
wp_data
directory sull'host in/var/lib/mysql
all'interno del contenitore. - Inoltra la porta esposta 80 sul container alla porta 8080 sul computer host.
- Definisce le variabili di ambiente per
wordpress
immagine. - Il
depends_on
l'istruzione definisce la dipendenza tra i due servizi. In questo esempio,db
verrà avviato prima diwordpress
.
Dalla directory del progetto, avvia l'applicazione WordPress eseguendo il comando seguente:
docker-compose up
L'output dovrebbe essere simile a questo:
...
wordpress_1 | [Sun Sep 23 22:31:43.499055 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.10 configured -- resuming normal operations
wordpress_1 | [Sun Sep 23 22:31:43.499796 2018] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
Compose estrarrà entrambe le immagini, avvierà due contenitori e creerà il wp_data
directory nella directory del tuo progetto.
Inserisci http://0.0.0.0:8080/
nel tuo browser e vedrai la schermata di installazione di Wordpress.
A questo punto l'applicazione Wordpress è attiva e funzionante e puoi iniziare a lavorare sul tuo tema o plugin.
Per interrompere la composizione, premi CTRL+C
.
Puoi anche avviare Compose in una modalità separata passando il -d
bandiera.
docker-compose up -d
Per controllare i servizi in esecuzione usa il ps
opzione:
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à separata per interrompere i servizi, utilizzare:
docker-compose stop
Se vuoi rimuovere completamente i contenitori usa il down
opzione:
docker-compose down
Passando i --volumes
switch rimuoverà anche i volumi di dati:
docker-compose down --volumes
Disinstallazione di Docker Compose #
Se per qualsiasi motivo desideri disinstallare Docker Compose puoi semplicemente rimuovere il file binario digitando:
sudo rm /usr/local/bin/docker-compose