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
:
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 retebridge
è 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:
frontend:
build: ./frontend
ports:
- "3000:3000"
networks:
- task-network
Esempio per il backend:
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:
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
:
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:
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 volumedb-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:
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. Avvio dei container:
Terminal
docker compose up
- 2. Controllo della rete:
- Usa il comando
docker network ls
, per assicurarti che la retetask-network
sia stata creata. - Usa il comando
docker network inspect task-network
, per controllare che tutti i container siano collegati a questa rete.
- Usa il comando
- 3. Controllo dei volumi:
- Usa il comando
docker volume ls
, per assicurarti che il volumedb-data
sia stato creato. - Usa il comando
docker volume inspect db-data
, per controllare i dettagli del volume.
- Usa il comando
GO TO FULL VERSION