PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Dauerhafte Datenbank mit Docker-Volumes

Gemäß dem Dockment von Docker Compose , wenn Sie so etwas schreiben wie:

volumes:
  - /var/lib/postgresql/data

Es erstellt ein neues Docker-Volume und ordnet es /var/lib/postgresql/data zu innerhalb des Containers. Daher jedes Mal, wenn Sie docker-compose up ausführen und docker-compose down , es schafft neues Volumen. Sie können das Verhalten mit docker volume ls bestätigen .

Um dies zu vermeiden, haben Sie zwei Möglichkeiten:

(A) Ordnen Sie das Hostverzeichnis dem Container zu

Sie können das Verzeichnis des Hosts mithilfe von <HOST_PATH>:<CONTAINER_PATH> dem Container zuordnen .

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

Die Daten von postgresql werden in /path/to/your/host/directory gespeichert des Containerhosts.

(B) Externen Behälter verwenden

docker-compose hat die Option externer Container .Wenn es auf „true“ gesetzt ist, wird nicht immer Volumen erzeugt.Hier ist ein Beispiel.

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

Mit external: true , erstellt docker-compose die mypostgredb nicht Volume, also müssen Sie es selbst mit folgendem Befehl erstellen:

docker volume create --name=mypostgredb

Die Daten von postgresql werden im Docker-Volume mit dem Namen mypostgredb gespeichert . Lesen Sie Referenz für mehr Details.