Secondo il Dockment di Docker Compose , quando scrivi qualcosa come:
volumes:
- /var/lib/postgresql/data
Crea un nuovo volume Docker e lo mappa a /var/lib/postgresql/data
all'interno del contenitore. Pertanto, ogni volta che esegui docker-compose up
e docker-compose down
, crea un nuovo volume. Puoi confermare il comportamento con docker volume ls
.
Per evitarlo, hai due opzioni:
(A) Mappa la directory host nel contenitore
Puoi mappare la directory dell'host nel contenitore usando <HOST_PATH>:<CONTAINER_PATH>
.
volumes:
- /path/to/your/host/directory:/var/lib/postgresql/data
I dati di postgresql verranno salvati in /path/to/your/host/directory
dell'host del contenitore.
(B) Usa un contenitore esterno
docker-compose ha un'opzione di contenitore esterno .Quando è impostato su true, non creerà sempre volume. Ecco un esempio.
version: '2'
services:
dbdata:
image: postgres:9.5.2
volumes:
- mypostgresdb:/var/lib/postgresql/data
volumes:
mypostgresdb:
external: true
Con external: true
, docker-compose non creerà il mypostgredb
volume, quindi devi crearlo da solo usando il seguente comando:
docker volume create --name=mypostgredb
I dati di postgresql verranno salvati nel volume della finestra mobile denominato mypostgredb
. Leggi riferimento
per maggiori dettagli.