PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Database persistente che utilizza i volumi Docker

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.