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.