Menurut Dockment of Docker Compose , ketika Anda menulis sesuatu seperti:
volumes:
- /var/lib/postgresql/data
Itu membuat volume buruh pelabuhan baru dan memetakannya ke /var/lib/postgresql/data
di dalam wadah. Oleh karena itu, setiap kali Anda menjalankan docker-compose up
dan docker-compose down
, itu menciptakan volume baru. Anda dapat mengkonfirmasi perilaku dengan docker volume ls
.
Untuk menghindarinya, Anda memiliki dua opsi:
(A) Memetakan direktori host ke dalam wadah
Anda dapat memetakan direktori host ke dalam wadah menggunakan <HOST_PATH>:<CONTAINER_PATH>
.
volumes:
- /path/to/your/host/directory:/var/lib/postgresql/data
Data postgresql akan disimpan ke /path/to/your/host/directory
dari host kontainer.
(B) Gunakan penampung eksternal
docker-compose memiliki opsi kontainer eksternal .Jika disetel ke true, itu tidak akan selalu membuat volume. Berikut contohnya.
version: '2'
services:
dbdata:
image: postgres:9.5.2
volumes:
- mypostgresdb:/var/lib/postgresql/data
volumes:
mypostgresdb:
external: true
Dengan external: true
, docker-compose tidak akan membuat mypostgredb
volume, jadi Anda harus membuatnya sendiri menggunakan perintah berikut:
docker volume create --name=mypostgredb
Data postgresql akan disimpan ke dalam volume buruh pelabuhan bernama mypostgredb
. Baca referensi
untuk lebih detail.