Según el Dockment de Docker Compose , cuando escribes algo como:
volumes:
- /var/lib/postgresql/data
Crea un nuevo volumen acoplable y lo asigna a /var/lib/postgresql/data dentro del contenedor. Por lo tanto, cada vez que ejecuta docker-compose up y docker-compose down , crea nuevo volumen. Puede confirmar el comportamiento con docker volume ls .
Para evitarlo, tienes dos opciones:
(A) Asigne el directorio del host al contenedor
Puede asignar el directorio del host al contenedor usando <HOST_PATH>:<CONTAINER_PATH> .
volumes:
- /path/to/your/host/directory:/var/lib/postgresql/data
Los datos de postgresql se guardarán en /path/to/your/host/directory del host del contenedor.
(B) Usar contenedor externo
docker-compose tiene una opción de contenedor externo .Cuando se establece en verdadero, no siempre creará volumen. He aquí un ejemplo.
version: '2'
services:
dbdata:
image: postgres:9.5.2
volumes:
- mypostgresdb:/var/lib/postgresql/data
volumes:
mypostgresdb:
external: true
Con external: true , docker-compose no creará el mypostgredb volumen, por lo que debe crearlo usted mismo usando el siguiente comando:
docker volume create --name=mypostgredb
Los datos de postgresql se guardarán en el volumen docker llamado mypostgredb . Leer referencia
para más detalles.