Sobes.tech
Junior

Cos'è Docker Compose e come si usa?

sobes.tech AI

Risposta dell'AI

Docker Compose è uno strumento per definire e eseguire applicazioni Docker multi-contenitore. Permette di descrivere i servizi dell'applicazione, le loro dipendenze e configurazioni in un singolo file (di solito docker-compose.yml). Con un solo comando, è possibile avviare tutti i servizi definiti.

Utilizzo di Docker Compose:

  1. Definizione dei servizi: Nel file docker-compose.yml, si descrivono i vari componenti dell'applicazione come servizi (ad esempio, server web, database, API backend). Per ogni servizio si specifica l'immagine Docker, le porte, i volumi, le variabili di ambiente e le dipendenze.

    # esempio di file docker-compose.yml
    version: '3.8'
    services:
      webapp:
        image: my-webapp
        ports:
          - "80:80"
        volumes:
          - .:/app
      database:
        image: postgres:13
        environment:
          POSTGRES_USER: user
          POSTGRES_PASSWORD: password
    
  2. Avvio dell'applicazione: Il comando docker-compose up costruisce, crea e avvia tutti i servizi descritti nel file docker-compose.yml.

    # avvia tutti i servizi in background
    docker-compose up -d
    
  3. Arresto dell'applicazione: Il comando docker-compose down ferma e rimuove i container, le reti e i volumi creati da docker-compose up.

    # ferma e rimuove i servizi
    docker-compose down
    

Vantaggi principali:

  • Semplificazione della configurazione: Tutta la configurazione dell'applicazione multi-contenitore è concentrata in un singolo file.
  • Riproducibilità: È facile configurare e avviare l'applicazione in un ambiente identico su diverse macchine.
  • Gestione del ciclo di vita: Comandi semplici per avviare, fermare e riavviare tutti i servizi.
  • Test: È comodo per creare ambienti di test con servizi dipendenti (database, code di messaggi, ecc.).

In QA, Docker Compose viene spesso utilizzato per distribuire rapidamente ambienti di test, simulare infrastrutture complesse e garantire la prevedibilità dell'ambiente di test.