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.