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.