Docker Compose: Nozioni di base e utilizzo

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.