Installazione e Configurazione di Docker Compose
Docker Compose è uno strumento essenziale per gestire applicazioni multi-container in modo coerente e automatizzato. Con Docker Compose, puoi definire e avviare facilmente tutti i servizi di un’applicazione utilizzando un semplice file YAML. In questa guida, esploreremo come installare Docker Compose su diverse piattaforme, configurarlo correttamente e seguirne le best practices.
1. Cos’è Docker Compose?
Docker Compose è uno strumento che permette di definire e gestire applicazioni multi-container utilizzando file YAML (docker-compose.yml
). Con un singolo comando, Docker Compose può avviare, fermare e gestire tutti i servizi necessari per eseguire un’applicazione.
2. Installazione di Docker Compose
Docker Compose è disponibile per diverse piattaforme, tra cui Linux, macOS e Windows. La procedura di installazione varia leggermente a seconda del sistema operativo.
2.1. Installazione su Linux
Passo 1: Scaricare la Versione piĂą Recente
Per installare Docker Compose su Linux, scarica la versione piĂą recente dal repository GitHub ufficiale:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Sostituisci v2.24.0
con la versione piĂą recente, se necessario.
Passo 2: Rendere Eseguibile Docker Compose
Rendi eseguibile il file appena scaricato:
sudo chmod +x /usr/local/bin/docker-compose
Passo 3: Verificare l’Installazione
Verifica che Docker Compose sia stato installato correttamente:
docker-compose --version
Questo comando dovrebbe restituire la versione di Docker Compose installata.
2.2. Installazione su macOS
Docker Compose è incluso in Docker Desktop per macOS. Se Docker Desktop è già installato, Docker Compose è pronto all’uso.
Installare Docker Desktop
- Scarica Docker Desktop per macOS dal sito ufficiale.
- Installa l’applicazione seguendo le istruzioni.
- Avvia Docker Desktop.
Dopo l’installazione, puoi verificare Docker Compose utilizzando il comando:
docker-compose --version
2.3. Installazione su Windows
Come per macOS, Docker Compose è incluso in Docker Desktop per Windows.
Installare Docker Desktop
- Scarica Docker Desktop per Windows dal sito ufficiale.
- Installa l’applicazione seguendo le istruzioni.
- Avvia Docker Desktop.
Verifica l’installazione di Docker Compose con:
docker-compose --version
3. Configurazione di Docker Compose
3.1. Creazione del File docker-compose.yml
Il cuore di Docker Compose è il file docker-compose.yml
, che definisce i servizi, le reti e i volumi necessari per la tua applicazione.
Esempio di Configurazione di Base
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./web:/usr/share/nginx/html
db:
image: postgres:13
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
In questo esempio, sono definiti due servizi: web
(basato su Nginx) e db
(basato su PostgreSQL). I servizi sono collegati tramite volumi che persistono i dati tra i riavvii dei container.
3.2. Gestione delle Variabili d’Ambiente
Le variabili d’ambiente possono essere definite direttamente nel file docker-compose.yml
o in un file .env
separato.
Definire Variabili d’Ambiente nel File YAML
services:
web:
image: nginx:latest
environment:
- NGINX_HOST=localhost
- NGINX_PORT=80
Utilizzare un File .env
Crea un file .env
nella stessa directory del file docker-compose.yml
:
NGINX_HOST=localhost
NGINX_PORT=80
Docker Compose caricherĂ automaticamente queste variabili quando avvierai i servizi.
3.3. Utilizzo di Volumi e Reti
I volumi vengono utilizzati per persistere i dati, mentre le reti vengono utilizzate per configurare la comunicazione tra i container.
Definire e Collegare Volumi
volumes:
db_data:
services:
db:
image: postgres:13
volumes:
- db_data:/var/lib/postgresql/data
Definire e Collegare Reti
networks:
my_network:
services:
web:
image: nginx:latest
networks:
- my_network
db:
image: postgres:13
networks:
- my_network
In questo esempio, entrambi i servizi web
e db
sono collegati alla rete my_network
, permettendo loro di comunicare tra di loro.
4. Gestione dei Servizi con Docker Compose
4.1. Avviare i Servizi
Per avviare i servizi definiti nel file docker-compose.yml
, utilizza il comando:
docker-compose up
- -d: Aggiungi questa opzione per eseguire i servizi in background (detached mode).
4.2. Fermare i Servizi
Per fermare e rimuovere tutti i container definiti nel file docker-compose.yml
, utilizza:
docker-compose down
4.3. Scalare i Servizi
Docker Compose consente di scalare rapidamente il numero di repliche di un servizio:
docker-compose up --scale web=3
Questo comando avvierĂ tre istanze del servizio web
.
4.4. Aggiornare i Servizi
Se aggiorni l’immagine di un servizio o modifichi la configurazione, puoi applicare le modifiche utilizzando:
docker-compose up -d
4.5. Verificare i Log
Puoi visualizzare i log di tutti i servizi con:
docker-compose logs
4.6. Eseguire Comandi sui Servizi
Esegui comandi sui container in esecuzione utilizzando:
docker-compose exec web bash
Questo comando apre una shell bash nel container web
.
5. Best Practices per Docker Compose
5.1. Versionamento del File docker-compose.yml
Mantieni il tuo file docker-compose.yml
sotto controllo di versione (es. Git), in modo da poter tracciare facilmente le modifiche e ripristinare configurazioni precedenti se necessario.
5.2. Separazione degli Ambienti
Utilizza file docker-compose.override.yml
per sovrascrivere o aggiungere configurazioni specifiche per ambienti di sviluppo, staging o produzione.
5.3. Sicurezza delle Variabili d’Ambiente
Non includere informazioni sensibili direttamente nel file docker-compose.yml
. Utilizza i Docker Secrets per gestire in modo sicuro le credenziali e le chiavi API.
5.4. Limiti di Risorse
Configura limiti di risorse per evitare che un singolo container esaurisca le risorse del sistema:
services:
web:
image: nginx:latest
deploy:
resources:
limits:
cpus: "0.5"
memory: "256M"
5.5. Test e Automazione
Integra Docker Compose nelle pipeline CI/CD per automatizzare la build, il test e il deploy delle applicazioni multi-container. Verifica sempre le configurazioni in un ambiente di staging prima di distribuirle in produzione.
6. Conclusione
L’installazione e la configurazione di Docker Compose sono fondamentali per gestire efficacemente applicazioni multi-container. Seguendo questa guida, sarai in grado di installare Docker Compose su diverse piattaforme, configurare i tuoi servizi in modo coerente e applicare le best practices per mantenere un ambiente Docker Compose stabile, sicuro e performante. Docker Compose è uno strumento potente che semplifica notevolmente la gestione delle applicazioni containerizzate, rendendolo indispensabile per gli sviluppatori e i team DevOps.