🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Installazione e Configurazione di Docker Compose

Codegrind Team•Aug 28 2024

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

  1. Scarica Docker Desktop per macOS dal sito ufficiale.
  2. Installa l’applicazione seguendo le istruzioni.
  3. 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

  1. Scarica Docker Desktop per Windows dal sito ufficiale.
  2. Installa l’applicazione seguendo le istruzioni.
  3. 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.