sql >> Database >  >> RDS >> PostgreSQL

Aanhoudende database die docker-volumes gebruikt

Volgens de Dockment van Docker Compose , als je iets schrijft als:

volumes:
  - /var/lib/postgresql/data

Het maakt een nieuw docker-volume aan en wijst het toe aan /var/lib/postgresql/data in de container. Daarom, elke keer dat u docker-compose up . uitvoert en docker-compose down , het creëert een nieuw volume. U kunt het gedrag bevestigen met docker volume ls .

Om dit te vermijden, heb je twee opties:

(A) Map hostdirectory in container

U kunt de map van de host toewijzen aan een container met behulp van <HOST_PATH>:<CONTAINER_PATH> .

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

De gegevens van postgresql worden opgeslagen in /path/to/your/host/directory van de containerhost.

(B) Externe container gebruiken

docker-compose heeft een optie van externe container .Als het is ingesteld op waar, zal het niet altijd volume creëren. Hier is een voorbeeld.

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

Met external: true , maakt docker-compose de mypostgredb niet aan volume, dus u moet het zelf maken met de volgende opdracht:

docker volume create --name=mypostgredb

De gegevens van postgresql worden opgeslagen in het docker-volume met de naam mypostgredb . Lees referentie voor meer details.




  1. `pg_tblspc` ontbreekt na installatie van de nieuwste versie van OS X (Yosemite of El Capitan)

  2. Oracle naar mysql database spiegelen

  3. Exact tijdsverschil verkrijgen uit het MYSQL datetime-veld

  4. Waarom 'foreign key constraint mislukt' als er een externe sleutel bestaat?