sql >> Base de Datos >  >> RDS >> PostgreSQL

Base de datos persistente usando volúmenes acoplables

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.