Enligt Dockment of Docker Compose , när du skriver något som:
volumes:
- /var/lib/postgresql/data
Den skapar en ny dockningsvolym och mappar den till /var/lib/postgresql/data
inuti behållaren. Därför varje gång du kör docker-compose up
och docker-compose down
, skapar det ny volym. Du kan bekräfta beteendet med docker volume ls
.
För att undvika det har du två alternativ:
(A) Mappa värdkatalogen till container
Du kan mappa katalogen för värddatorn till container med <HOST_PATH>:<CONTAINER_PATH>
.
volumes:
- /path/to/your/host/directory:/var/lib/postgresql/data
Data för postgresql kommer att sparas i /path/to/your/host/directory
av behållarvärden.
(B) Använd extern behållare
docker-compose har ett alternativ för extern behållare .När den är inställd på sant skapar den inte alltid volym. Här är ett exempel.
version: '2'
services:
dbdata:
image: postgres:9.5.2
volumes:
- mypostgresdb:/var/lib/postgresql/data
volumes:
mypostgresdb:
external: true
Med external: true
, kommer docker-compose inte att skapa mypostgredb
volym, så du måste skapa den själv med följande kommando:
docker volume create --name=mypostgredb
Data för postgresql kommer att sparas i dockervolymen med namnet mypostgredb
. Läs referens
för mer information.