Według Dockment Docker Compose , kiedy piszesz coś takiego:
volumes:
- /var/lib/postgresql/data
Tworzy nowy wolumin dockera i mapuje go do /var/lib/postgresql/data
wewnątrz kontenera. Dlatego za każdym razem, gdy uruchamiasz docker-compose up
i docker-compose down
, tworzy nową objętość. Możesz potwierdzić zachowanie za pomocą docker volume ls
.
Aby tego uniknąć, masz dwie możliwości:
(A) Mapuj katalog hosta do kontenera
Możesz mapować katalog hosta do kontenera za pomocą <HOST_PATH>:<CONTAINER_PATH>
.
volumes:
- /path/to/your/host/directory:/var/lib/postgresql/data
Dane postgresql zostaną zapisane w /path/to/your/host/directory
hosta kontenera.
(B) Użyj zewnętrznego kontenera
docker-compose ma opcję zewnętrznego kontenera .Kiedy jest ustawione na true, nie zawsze tworzy głośność.Oto przykład.
version: '2'
services:
dbdata:
image: postgres:9.5.2
volumes:
- mypostgresdb:/var/lib/postgresql/data
volumes:
mypostgresdb:
external: true
Z external: true
, docker-compose nie utworzy mypostgredb
wolumin, więc musisz go utworzyć samodzielnie za pomocą następującego polecenia:
docker volume create --name=mypostgredb
Dane postgresql zostaną zapisane w woluminie dockera o nazwie mypostgredb
. Przeczytaj odnośnik
po więcej szczegółów.