CodeGym /Corsi /Docker SELF /Configurazione di docker-compose.yml per avviare tutti i ...

Configurazione di docker-compose.yml per avviare tutti i servizi

Docker SELF
Livello 23 , Lezione 3
Disponibile

4.1 Inizializzazione

In questo step configureremo il file compose.yaml per avviare tutti i servizi della nostra applicazione multiconteiner. Il file compose.yaml includerà le impostazioni per il frontend, il backend e il database, così come la definizione delle reti e dei volumi.

Definizione della versione di Docker Compose

Iniziamo specificando la versione di Docker Compose. In questo esempio viene utilizzata la versione 3:

Yaml

version: '3'

4.2 Definizione dei servizi

Servizio 1: Frontend (ReactJS)

Definiamo un servizio per il frontend, che sarà costruito dalla directory frontend e sarà disponibile sulla porta 3000:

Yaml

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    networks:
      - task-network

Servizio 2: Backend (Flask)

Definiamo un servizio per il backend, che sarà costruito dalla directory backend. Dipende dal servizio di database e sarà disponibile sulla porta 5000:

Yaml

  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - database
    networks:
      - task-network
    environment:
      - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb

Dove:

  • depends_on: indica che il servizio backend dipende dal servizio database. Questo significa che il database sarà avviato prima del backend.
  • environment: configura le variabili d'ambiente per connettersi al database.

Servizio 3: Database (PostgreSQL)

Definiamo un servizio per il database, utilizzando l'immagine ufficiale postgres:13. Configuriamo le variabili d'ambiente per creare un database e le credenziali dell'utente:

Yaml

  database:
    image: postgres:13
    environment:
      - POSTGRES_DB=taskdb
      - POSTGRES_USER=taskuser
      - POSTGRES_PASSWORD=taskpassword
    networks:
      - task-network
    volumes:
      - db-data:/var/lib/postgresql/data

Dove:

  • environment: configura le variabili d'ambiente per creare il database e l'utente al momento dell'avvio del container.
  • volumes: collega il volume db-data per la memorizzazione permanente dei dati.

4.3 Configurazione di reti e volumi

Definiamo le reti e i volumi che verranno utilizzati dai nostri servizi:

Yaml

networks:
  task-network:
    driver: bridge
      
volumes:
  db-data:

Dove:

  • networks: definisce la rete task-network con tipo di driver bridge, che verrà utilizzata per la comunicazione tra i container.
  • volumes: definisce il volume db-data per la memorizzazione dei dati del database.

4.4 File completo docker-compose.yml

Ora uniamo tutte le parti in un unico file docker-compose.yml:

Yaml

version: '3'

services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    networks:
      - task-network
        
  backend:
    build: ./backend
    ports:
      - "5000:5000"
    depends_on:
      - database
    networks:
      - task-network
    environment:
      - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
        
  database:
    image: postgres:13
    environment:
      - POSTGRES_DB=taskdb
      - POSTGRES_USER=taskuser
      - POSTGRES_PASSWORD=taskpassword
    networks:
      - task-network
    volumes:
      - db-data:/var/lib/postgresql/data
        
networks:
  task-network:
    driver: bridge
        
volumes:
  db-data:

Spiegazione delle impostazioni

  • build: indica il percorso alla directory con il Dockerfile per costruire l'immagine.
  • ports: apre le porte sull'host per accedere ai servizi.
  • depends_on: specifica che il servizio dipende da un altro per garantire l'ordine di avvio.
  • environment: configura le variabili d'ambiente per i servizi.
  • networks: definisce la rete per la comunicazione tra i container.
  • volumes: definisce i volumi per l'archiviazione persistente dei dati.

4.5 Avvio dell'applicazione

Ora che il file compose.yaml è configurato, possiamo avviare tutti i servizi con un solo comando:

Terminal

docker compose up

Questo comando creerà e avvierà i container per il frontend, il backend e il database, utilizzando le impostazioni definite in compose.yaml.

Verifica dell'avvio

Dopo l'avvio dei container, assicurati che tutti i servizi funzionino correttamente:

  1. Frontend: apri il browser e vai all'indirizzo http://localhost:3000 per verificare il funzionamento del frontend.
  2. Backend: apri il browser e vai all'indirizzo http://localhost:5000 per verificare il funzionamento del backend.
  3. Database: assicurati che il container del database sia avviato e accessibile tramite interazione di rete con il backend.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION