CodeGym /Corsi /Docker SELF /Configurazione di reti e volumi per l'applicazione

Configurazione di reti e volumi per l'applicazione

Docker SELF
Livello 23 , Lezione 4
Disponibile

5.1 Configurazione della rete

Diamo un'occhiata più da vicino a come configurare reti e volumi per la nostra applicazione multi-container. Questo garantirà la corretta interazione tra i servizi e l'archiviazione duratura dei dati.

Le reti Docker consentono ai container di interagire tra loro. Nella nostra applicazione utilizzeremo una rete di tipo bridge per collegare il frontend, il backend e il database.

Creazione della rete

Abbiamo già definito la rete task-network nel file docker-compose.yml:

Yaml

networks:
  task-network:
    driver: bridge

Dove:

  • task-network: il nome della rete che sarà utilizzata per l'interazione dei container.
  • driver: bridge: il tipo di rete. La rete bridge è standard per collegare container su un unico host.

Connessione dei servizi alla rete

Abbiamo collegato tutti i servizi a questa rete nel file docker-compose.yml. Assicurati che ogni servizio sia collegato correttamente:

Esempio per il frontend:

Yaml

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

Esempio per il backend:

Yaml

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

Esempio per il database:

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

5.2 Configurazione dei volumi

I volumi Docker ti permettono di salvare i dati dei container sul sistema host, garantendo una conservazione a lungo termine. Nella nostra applicazione utilizzeremo un volume per memorizzare i dati del database PostgreSQL.

Creazione del volume

Abbiamo già definito il volume db-data nel file compose.yaml:

Yaml

volumes:
  db-data:

Dove:

  • db-data: il nome del volume che sarà usato per memorizzare i dati del database PostgreSQL.

Collegare il volume al servizio del database

Abbiamo collegato il volume db-data al servizio del database nel file docker-compose.yml. Assicuriamoci che sia fatto correttamente:

Esempio per il database:

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:

  • volumes: definisce quali volumi saranno collegati al container.
  • db-data:/var/lib/postgresql/data: collega il volume db-data alla directory /var/lib/postgresql/data all'interno del container. Questa directory è usata da PostgreSQL per la memorizzazione dei dati.

5.3 File completo compose.yaml

Per chiarezza e completezza, ecco il file completo compose.yaml, che include la configurazione di reti e volumi:

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:

Verifica delle configurazioni di reti e volumi

Dopo aver configurato reti e volumi, assicurati che tutto sia impostato correttamente e funzioni correttamente:

  1. 1. Avvio dei container:
    Terminal
    
    docker compose up
                
  2. 2. Controllo della rete:
    • Usa il comando docker network ls, per assicurarti che la rete task-network sia stata creata.
    • Usa il comando docker network inspect task-network, per controllare che tutti i container siano collegati a questa rete.
  3. 3. Controllo dei volumi:
    • Usa il comando docker volume ls, per assicurarti che il volume db-data sia stato creato.
    • Usa il comando docker volume inspect db-data, per controllare i dettagli del volume.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION