🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Creare un File Docker Compose

Codegrind Team•Aug 28 2024

Docker Compose è uno strumento potente che consente di definire e gestire applicazioni multi-container con un semplice file YAML. Con Docker Compose, puoi descrivere i servizi che compongono la tua applicazione, le reti e i volumi necessari per farli funzionare, e avviare tutto con un solo comando. In questa guida, esploreremo come creare un file Docker Compose (docker-compose.yml), definire i servizi e gestire un’applicazione multi-container in modo efficiente.

1. Creare un File Docker Compose

Il file Docker Compose è un file YAML che solitamente viene chiamato docker-compose.yml. Questo file descrive i servizi che Docker deve creare, le reti da utilizzare e i volumi per la persistenza dei dati.

Creazione del File docker-compose.yml

Inizia creando un file chiamato docker-compose.yml nella directory principale del tuo progetto.

touch docker-compose.yml

2. Struttura Base di un File Docker Compose

La struttura di un file Docker Compose è suddivisa in sezioni principali:

  • version: Specifica la versione del formato Compose.
  • services: Definisce i servizi (container) che compongono l’applicazione.
  • volumes (opzionale): Definisce i volumi utilizzati dai servizi.
  • networks (opzionale): Definisce le reti personalizzate utilizzate dai servizi.

Esempio di Struttura Base

version: "3.8"
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example

volumes:
  db_data:

In questo esempio, il file docker-compose.yml definisce due servizi: web (Nginx) e db (PostgreSQL). La sezione volumes definisce un volume chiamato db_data per la persistenza dei dati del database.

3. Definire i Servizi

Ogni servizio rappresenta un container e può essere configurato con diverse opzioni, come l’immagine da utilizzare, le porte da esporre, le variabili d’ambiente e i volumi da montare.

Esempio di Definizione di un Servizio Web

services:
  web:
    image: nginx
    ports:
      - "8080:80"

In questo esempio, il servizio web utilizza l’immagine nginx e mappa la porta 8080 dell’host alla porta 80 del container.

Esempio di Definizione di un Servizio Database

services:
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - db_data:/var/lib/postgresql/data

Il servizio db utilizza l’immagine postgres, imposta la password dell’utente postgres tramite una variabile d’ambiente e monta un volume chiamato db_data per la persistenza dei dati del database.

4. Gestire i Volumi

I volumi sono utilizzati per conservare i dati tra riavvii dei container. Nel file Docker Compose, puoi definire i volumi a livello di servizio o globalmente.

Definire un Volume a Livello di Servizio

services:
  db:
    image: postgres
    volumes:
      - db_data:/var/lib/postgresql/data

In questo esempio, il volume db_data è montato sulla directory /var/lib/postgresql/data all’interno del container PostgreSQL.

Definire un Volume Globalmente

volumes:
  db_data:

Questo esempio definisce un volume chiamato db_data che può essere utilizzato da più servizi.

5. Gestire le Reti

Le reti permettono ai container di comunicare tra loro. Docker Compose crea automaticamente una rete bridge predefinita per i servizi definiti nel file, ma puoi anche definire reti personalizzate.

Definire una Rete Personalizzata

services:
  web:
    image: nginx
    networks:
      - my_network

  db:
    image: postgres
    networks:
      - my_network

networks:
  my_network:

In questo esempio, entrambi i servizi web e db sono connessi a una rete personalizzata chiamata my_network, permettendo loro di comunicare tra loro.

6. Avviare e Gestire l’Applicazione con Docker Compose

Una volta configurato il file docker-compose.yml, puoi utilizzare Docker Compose per avviare e gestire l’intera applicazione.

Avviare l’Applicazione

docker-compose up -d
  • -d: Esegue i servizi in modalitĂ  detach (in background).

Questo comando avvia tutti i servizi definiti nel file docker-compose.yml.

Fermare l’Applicazione

docker-compose down

Questo comando ferma e rimuove tutti i container, le reti e i volumi creati da Docker Compose.

Altri Comandi Utili

  • Visualizzare i Servizi:
docker-compose ps
  • Visualizzare i Log:
docker-compose logs
  • Riavviare i Servizi:
docker-compose restart

Esempio Completo di File docker-compose.yml

Ecco un esempio completo di un file docker-compose.yml che definisce un’applicazione web con un database:

version: "3.8"
services:
  web:
    image: nginx
    ports:
      - "8080:80"
    networks:
      - app_network

  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - db_data:/var/lib/postgresql/data
    networks:
      - app_network

volumes:
  db_data:

networks:
  app_network:

Conclusione

Creare un file Docker Compose ti permette di definire e gestire applicazioni multi-container in modo semplice ed efficiente. Con un unico file YAML, puoi configurare i servizi, le reti e i volumi necessari per far funzionare la tua applicazione. Utilizzando Docker Compose, puoi avviare, fermare e gestire l’intera applicazione con pochi comandi, semplificando il processo di sviluppo e distribuzione.