Docker Compose è uno strumento potente e popolare utilizzato per la gestione e la distribuzione di applicazioni basate su Docker. Consente di definire, configurare ed eseguire più Docker container come un unico progetto, semplificando la distribuzione delle applicazioni e garantendo la coerenza tra gli ambienti di sviluppo e di produzione.
Di seguito sono riportati alcuni concetti ed esempi di Docker Compose:
Definisci il progetto utilizzando il file docker-compose.yml
Nel docker-compose.yml
file è possibile definire i servizi richiesti per la propria applicazione. Ad esempio, per distribuire un'applicazione web PHP con un database MySQL, puoi definire due servizi come segue:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "80:80"
volumes:
- ./app:/var/www/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: my_database
Nello snippet di codice sopra, definiamo due servizi: web
e db
. Il web
servizio utilizzerà PHP 7.4 image con Apache, ascolterà sulla porta 80 e monterà la ./app
directory dall'host nella /var/www/html
directory nel file container. Il db
servizio utilizzerà MySQL 5.7 image e imposterà alcune variabili d'ambiente necessarie per il database.
Usando Docker Compose il comando
Una volta definito il progetto nel docker-compose.yml
file, è possibile utilizzare Docker Compose i comandi per gestire i servizi.
-
Avvia il progetto:
docker-compose up
Questo comando avvierà i contenitori per i servizi definiti nel
docker-compose.yml
file. -
Fermare e rimuovere i contenitori:
docker-compose down
Questo comando interrompe e rimuove tutti i contenitori relativi al progetto.
-
Elenca i contenitori in esecuzione:
docker-compose ps
Questo comando visualizzerà lo stato dei contenitori nel progetto.
-
Visualizza i registri di servizio:
docker-compose logs
Questo comando mostra i log dei servizi nel progetto.
Variabili d'ambiente e personalizzazione
Docker Compose consente di utilizzare le variabili di ambiente per personalizzare le configurazioni per diversi ambienti, come lo sviluppo e la produzione. È possibile utilizzare le variabili di ambiente nel docker-compose.yml
file e definirne i valori nei .env
file corrispondenti.
Ad esempio, se vuoi definire una variabile d'ambiente per la porta del web
servizio, puoi aggiungere una riga al .env
file come questa:
WEB_PORT=8080
Quindi, nel docker-compose.yml
file, puoi utilizzare questa variabile di ambiente in questo modo:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "${WEB_PORT}:80"
volumes:
- ./app:/var/www/html
Quando si esegue il docker-compose up
comando, il web
servizio ascolterà sulla porta 8080 anziché sulla porta 80.
Integrazione con Docker Swam
Se desideri distribuire la tua applicazione in un ambiente distribuito con più nodi, Docker Compose puoi integrarla con Docker Swarm. Ciò consente di gestire i servizi su più nodi in un Docker cluster.
Per utilizzare questa integrazione, è sufficiente aggiungere le opzioni --orchestrate
o durante l'esecuzione dei comandi o in un ambiente. --with-registry-auth
docker stack deploy
docker-compose up
Swarm
Docker Compose è uno strumento utile per lo sviluppo, il test e la distribuzione di applicazioni in modo semplice ed efficiente. Riduce al minimo le differenze tra gli ambienti di sviluppo e di produzione, garantisce la coerenza nel processo di sviluppo del software e migliora la produttività dei team di sviluppo.