Capitolo 6 – Docker Compose
In questo capitolo vedremo:
- Cos’è Docker Compose
- Installazione del plugin Compose
- Struttura di un file docker-compose.yml
- Gestione di applicazioni multi-container
- Comandi principali
- Variabili d’ambiente
- Best practice
6.1 Cos’è Docker Compose
Docker Compose è uno strumento che permette di definire e gestire applicazioni multi-container tramite un file YAML.
Con un solo comando è possibile:
- Creare reti
- Creare volumi
- Avviare più container
- Gestire dipendenze tra servizi
È ideale per ambienti di sviluppo e piccole/medie infrastrutture.
6.2 Verifica installazione
Docker Compose è incluso come plugin nelle versioni recenti di Docker.
Verifica:
docker compose version
Se il comando risponde con una versione, Compose è correttamente installato.
6.3 Struttura base di docker-compose.yml
Esempio semplice con Nginx:
services:
web:
image: nginx:latest
ports:
- "8080:80"
Salvare il file come:
docker-compose.yml
6.4 Avviare un progetto Compose
Dalla directory dove si trova il file:
docker compose up -d
Parametri:
up→ crea e avvia i servizi-d→ modalità detached (background)
Verifica container attivi:
docker compose ps
6.5 Fermare e rimuovere i servizi
Fermare i container:
docker compose stop
Fermare e rimuovere container, reti e configurazioni:
docker compose down
Rimuovere anche i volumi:
docker compose down -v
6.6 Esempio applicazione multi-container (Web + Database)
Esempio con Nginx e MySQL:
services:
web:
image: nginx:latest
ports:
- "8080:80"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: esempio
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
In questo esempio:
- Viene creata automaticamente una rete
- I servizi possono comunicare usando il nome del servizio (es.
db) - Il volume
db_datasalva i dati del database
6.7 Variabili d’ambiente con file .env
Creare un file .env nella stessa directory:
MYSQL_ROOT_PASSWORD=superpassword
Nel file docker-compose.yml:
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
Compose caricherà automaticamente le variabili dal file .env.
6.8 Ricostruire i servizi
Se modifichi il Dockerfile:
docker compose up -d --build
Forzare la ricreazione dei container:
docker compose up -d --force-recreate
6.9 Visualizzare i log
Log di tutti i servizi:
docker compose logs
Seguire i log in tempo reale:
docker compose logs -f
Log di un singolo servizio:
docker compose logs web
6.10 Scalare un servizio
Esempio:
docker compose up -d --scale web=3
Questo avvia 3 istanze del servizio web.
Best Practice
- Non usare
latestin produzione - Separare ambienti (dev, staging, prod)
- Usare file
.envper password e configurazioni - Versionare sempre il file docker-compose.yml
- Utilizzare volumi per dati persistenti
- Limitare CPU e RAM nei servizi critici
Conclusione
Ora sai:
- Cos’è Docker Compose
- Gestire applicazioni multi-container
- Usare variabili d’ambiente
- Scalare servizi
- Gestire reti e volumi automaticamente
Nel prossimo capitolo vedremo come mettere in produzione un'applicazione Docker con reverse proxy e HTTPS.
No comments to display
No comments to display