Docker Compose è uno strumento che consente di definire ed eseguire applicazioni Docker multi-container.
Con Compose, definisci i servizi, le reti e i volumi dell'applicazione in un unico file YAML, quindi fai girare l'applicazione con un solo comando.
Compose può essere utilizzato per scopi diversi, ad esempio distribuzioni di applicazioni host singole, test automatizzati e sviluppo locale.
Questo tutorial ti guida attraverso l'installazione dell'ultima versione di Docker Compose su CentOS 7. Tratteremo anche i concetti e i comandi di base di Docker Compose.
Prerequisiti #
Assicurati di soddisfare i seguenti prerequisiti prima di continuare con questo tutorial:
- Acceduto come utente con privilegi sudo.
- Avere Docker installato sul tuo sistema CentOS 7.
Installa Docker Compose su CentOS #
Il metodo consigliato per installare Docker Compose su CentOS 7 è scaricare il 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.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.
Completa i seguenti passaggi per installare Docker Compose su CentOS 7:
-
Inizia scaricando il binario Docker Compose in
/usr/local/bindirectory utilizzando il seguentecurlcomando: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, rendi eseguibile il binario digitando:
sudo chmod +x /usr/local/bin/docker-compose -
Per verificare l'installazione digitare il seguente comando per stampare la versione Compose:
docker-compose --versionL'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 eseguire uno stack WordPress sul tuo computer CentOS 7.
Inizia creando una nuova directory per il progetto e navigando in essa:
mkdir my_app && cd my_app
Quindi, crea un file denominato 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.
La prima riga specifica 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.7Immagine. Se l'immagine non è presente sul tuo sistema, Compose la estrarrà dal repository pubblico di Docker Hub. - Utilizza il riavvio
alwayspolicy che indicherà al container di riavviarsi sempre. - Crea un volume denominato
db_dataper rendere il database persistente. - Definisce le variabili di ambiente per
mysql:5.7immagine.
Il wordpress servizio:
- Utilizza
wordpressImmagine. Se l'immagine non è presente sul tuo sistema, Compose la estrarrà dal repository pubblico di Docker Hub. - Utilizza il riavvio
alwayspolicy che indicherà al container di riavviarsi sempre. - Monta il
wp_datadirectory sull'host in/var/lib/mysqlall'interno del contenitore. - Inoltra la porta esposta 80 sul container alla porta 8080 sul computer host.
- Definisce le variabili d'ambiente per
wordpressimmagine. - Il
depends_onl'istruzione definisce la dipendenza tra i due servizi. In questo esempio,dbverrà avviato prima diwordpress.
Dalla directory del progetto, avvia l'applicazione WordPress utilizzando il seguente comando:
docker-compose up L'output dovrebbe essere simile a questo:
...
wordpress_1 | [Sat Oct 13 21:30:48.286382 2018] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.25 (Debian) PHP/7.2.10 configured -- resuming normal operations
wordpress_1 | [Sat Oct 13 21:30:48.286425 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.
Apri il browser, digita http://0.0.0.0:8080/ in 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 .variabili d'ambienteSe vuoi avviare la Compose in una modalità separata usa 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
Per 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 vuoi disinstallare Docker Compose, elimina semplicemente il file binario usando il seguente comando:
sudo rm /usr/local/bin/docker-compose