PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Base de données persistante à l'aide de volumes Docker

Selon le Dockment de Docker Compose , lorsque vous écrivez quelque chose comme :

volumes:
  - /var/lib/postgresql/data

Il crée un nouveau volume docker et le mappe sur /var/lib/postgresql/data à l'intérieur du conteneur. Par conséquent, chaque fois que vous exécutez docker-compose up et docker-compose down , cela crée un nouveau volume. Vous pouvez confirmer le comportement avec docker volume ls .

Pour l'éviter, vous avez deux options :

(A) Mapper le répertoire hôte dans le conteneur

Vous pouvez mapper le répertoire de l'hôte dans le conteneur en utilisant <HOST_PATH>:<CONTAINER_PATH> .

volumes:
  - /path/to/your/host/directory:/var/lib/postgresql/data

Les données de postgresql seront enregistrées dans /path/to/your/host/directory de l'hôte du conteneur.

(B) Utiliser un conteneur externe

docker-compose a une option de conteneur externe .Lorsqu'il est défini sur true, il ne créera pas toujours de volume.Voici un exemple.

version: '2'
services:
  dbdata:
    image: postgres:9.5.2
    volumes:
      - mypostgresdb:/var/lib/postgresql/data
volumes:
  mypostgresdb:
    external: true

Avec external: true , docker-compose ne créera pas le mypostgredb volume, vous devez donc le créer vous-même à l'aide de la commande suivante :

docker volume create --name=mypostgredb

Les données de postgresql seront enregistrées dans le volume docker nommé mypostgredb . Lire la référence pour plus de détails.