Persistența cu volume
Sistemul de fișiere read/write al unui container este legat de ciclul său de viață. Datele care trebuie să supraviețuiască recreării containerului sunt păstrate în volume sau bind mounts.
Volume și bind mounts
| Mecanism | Locația datelor | Caz de utilizare |
|---|---|---|
| Volum Docker | administrat de Docker | date persistente ale bazelor de date |
| Bind mount | cale explicită de pe gazdă | fișiere sursă sau configurații locale |
În docker-compose.yml, serviciul db montează volumul pgdata în /var/lib/postgresql/data.
Identificarea volumului
Cu serviciile pornite, rulați:
docker volume ls
Compose adaugă de obicei numele proiectului ca prefix, astfel încât volumul va apărea ca lab1_pgdata dacă repository-ul se află în directorul lab1.
docker volume inspect lab1_pgdata
Dacă numele proiectului este diferit, folosiți numele afișat de docker volume ls.
Testarea persistenței
Creați un tichet în configurația cu PostgreSQL:
curl -sS -X POST http://localhost:8080/tickets \
-H 'Content-Type: application/json' \
-d '{"title":"Persistența volumului","priority":"high","reporter":"student"}'
Confirmați că tichetul există:
curl -sS http://localhost:8080/tickets
Opriți proiectul. down șterge containerele și rețeaua proiectului, dar păstrează implicit volumul:
docker compose down
docker volume ls
Recreați serviciile și verificați datele:
docker compose up --detach
docker compose ps
curl -sS http://localhost:8080/tickets
Tichetul trebuie să fie prezent deoarece noul container PostgreSQL folosește același volum.