saverioriotto.it

Docker Compose: Che cos'è e come si usa

Docker Compose è uno strumento che puoi utilizzare per gestire centralmente le distribuzioni di molti container Docker diversi. È uno strumento importante per qualsiasi applicazione che necessita di più microservizi, poiché consente a ciascun servizio di trovarsi facilmente in un container gestito separatamente.

Docker Compose: Che cos'è e come si usa

Cosa fa Docker Compose?

I container Docker vengono utilizzati per eseguire applicazioni in un ambiente isolato. Al giorno d'oggi è abbastanza comune vedere implementazioni di applicazioni eseguite in Docker per numerosi vantaggi. Tuttavia, spesso non è così semplice come eseguire semplicemente un singolo container. Di solito potresti avere molti container che si uniscono per agire come un servizio coeso composto da molte parti.

Gestire tutto questo al momento della distribuzione è complicato, quindi per ripulirlo, Docker fornisce Docker Compose , uno strumento di configurazione utilizzato per eseguire più container contemporaneamente. Puoi definire tutta la configurazione in un file YAML e quindi avviare tutti i container con un comando.

Invece di avere tutti i tuoi servizi in un unico grande container, Docker Compose ti consente di suddividerli in container gestibili individualmente. Questo è meglio sia per la creazione che per la distribuzione, poiché puoi gestirli tutti in codebase separate e non è necessario avviare manualmente ogni singolo container.

L'utilizzo di Docker Compose è un processo a tre fasi:

 - Creare delle immagini dei componenti utilizzando i loro Dockerfile oppure estrarli da un registro.
 - Definire tutti i servizi componenti in un file docker-compose.yml.
 - Eseguire tutte le immagini insieme utilizzando la docker-compose CLI.

Come si usa Docker Compose?

La configurazione per un file di composizione docker viene eseguita in docker-compose.yml. Non è necessario inserirlo nella radice del progetto come un Dockerfile. In effetti, può andare ovunque, poiché non dipende da nessun altro codice. Tuttavia, se stai costruendo le immagini localmente, dovrà andare in una cartella in fase di creazione del progetto.

version: '3'

Services:
   db:
     image: mysql:8.0
     volumes:
       - db_data: /var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: utilizza password di root
       MYSQL_DATABASE: wordpressdb
       MYSQL_USER: usernamewordpress
       MYSQL_PASSWORD: passwordwordpress

   wordpress:
     depends_on:
       - db
     image: wordpress: most recent
     ports:
       - "8000: 80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db: 3306
       WORDPRESS_DB_USER: usernamewordpress
       WORDPRESS_DB_PASSWORD: passwordwordpress
volumes:
    db_data:

Diamo un'occhiata al formato di questo file. Innanzitutto, un numero di versione, poiché la sintassi può cambiare a seconda della versione che stai utilizzando .

Successivamente un elenco di servizi. Il primo è denominato "db" e utilizza il container mysql:8.0, impostato per riavviarsi sempre, e con variabili di ambiente per configurare il database con un utente e una password. Per mantenere i dati persistenti ad ogni riavviavo del servizio, questa immagine è configurata con un volume Docker montato nella directory dei dati MySQL.

L'altro servizio è "wordpress", che dipende dal servizio di database, assicurando che Docker verificherà che il database sia avviato prima dell'esecuzione. Espone la porta 80 come porta 8000 e imposta alcune variabili di ambiente in modo che possa connettersi a MySQL. Si noti che l'host per il database è impostato su db:3306, che indica al container WordPress di connettersi al servizio "db".

Infine, i volumi sono definiti per l'archiviazione persistente. Facoltativamente, puoi anche definire reti personalizzate per i container. Ci sono molte opzioni estese che puoi configurare, quindi se stai cercando di fare qualcosa di specifico, dovresti controllare la documentazione per Docker Compose.

Una volta configurato, avviare questo servizio è facile. Esegui semplicemente docker-compose up, che estrarrà tutti i container richiesti e avvierà i tuoi servizi.

	docker-compose up -d

E dovresti vedere i servizi in esecuzione sul sistema con docker ps. In questo caso, vedrai WordPress installato e funzionante correttamente.

Build con Docker Compose

Docker Compose può essere utilizzato anche all'interno di un progetto Dockerfile e può essere configurato per creare ed eseguire un'immagine localmente anziché estrarla dall'hub Docker.

Per fare ciò, è sufficiente aggiungere una sezione build  al servizio. È possibile impostare diverse directory di contesto, nonché diversi Dockerfile per immagini diverse.

version: "3.8"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternativo
    image: imagename:tag


In questo caso, image: viene impostata, ma qui viene utilizzata per contrassegnare l'immagine creata da Docker Compose.




Commenti
* Obbligatorio