Che cos'è Docker Compose e come si usa?

0
255

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

Cosa Docker Compose funziona?

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

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

Invece di avere tutti i tuoi servizi in un unico grande contenitore, Docker Compose ti consente di suddividerli in singoli contenitori maneggevoli. Questo è sia meglio per la creazione che per l'implementazione, poiché puoi gestirli tutti in codebase separate e non è necessario avviare manualmente ogni singolo contenitore.

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

  • Crea le immagini dei componenti utilizzando i loro file Docker o estraili da un registro.
  • Definisci tutti i servizi dei componenti in un file docker-compose.yml.
  • Eseguili tutti insieme utilizzando la docker-compose CLI.

Docker Compose non è un altro tipo di Dockerfile. Dovrai comunque creare e pubblicare i tuoi contenitori Docker utilizzando un Dockerfile. Tuttavia, invece di eseguirli direttamente, puoi utilizzare Docker Compose per gestire la configurazione di una distribuzione multi-contenitore.

Come si usa Docker Compose?

La configurazione per un file docker compose 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 del progetto con il codice in fase di creazione.

Annuncio

Un file di configurazione di Compose avrà un aspetto simile al seguente. Questa configurazione esegue un'istanza di WordPress utilizzando il contenitore wordpress dall'hub Docker. Tuttavia, questo dipende da un database MySQL, anch'esso creato da Compose.

versione: '3' services: db: image: mysql:5.7 volumi: – db_data:/var/lib/mysql restart: sempre ambiente: MYSQL_ROOT_PASSWORD: rootpasswordchangeme MYSQL_DATABASE: wordpress MYSQL_USER: usernamechangeme MYSQL_PASSWORD: passwordchangeme wordpress: dipende_immagine: wordpress:ultime porte: – “8000:80” riavvio: sempre ambiente: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: usernamechangeme WORDPRESS_DB_PASSWORD: passwordchangeme volumi: 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 contenitore mysql:5.7, impostato per riavviare sempre e con variabili di ambiente per configurare il database con un utente e una password. Per mantenere i dati tra i riavvii, 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 si assicurerà 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. Nota che l'host per il database è impostato su db:3306, che indica al contenitore WordPress di connettersi al “db” servizio.

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

Pubblicità

Una volta configurato, l'avvio di 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.

RELAZIONATO: Come installare Docker e Docker Compose su Linux

Building 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é estrarre dall'hub Docker.

Da fare quindi, devi semplicemente aggiungere una sezione di build sul servizio. Puoi impostare diverse directory di contesto, nonché diversi Dockerfile per diverse immagini.

versione: “3.8” services: webapp: build: context: ./dir dockerfile: Dockerfile-alternate image: imagename:tag

In in questo caso, viene impostata anche la variabile image: , ma qui viene utilizzata per taggare l'immagine creata da Docker Compose.