डॉकर कंपोज़ के डॉकमेंट के अनुसार , जब आप कुछ ऐसा लिखते हैं:
volumes:
- /var/lib/postgresql/data
यह एक नया डॉकर वॉल्यूम बनाता है और इसे /var/lib/postgresql/data
पर मैप करता है। कंटेनर के अंदर। इसलिए, हर बार जब आप docker-compose up
run चलाते हैं और docker-compose down
, यह नया वॉल्यूम बनाता है। आप docker volume ls
. के साथ व्यवहार की पुष्टि कर सकते हैं ।
इससे बचने के लिए आपके पास दो विकल्प हैं:
(A) होस्ट निर्देशिका को कंटेनर में मैप करें
आप <HOST_PATH>:<CONTAINER_PATH>
का उपयोग करके होस्ट की निर्देशिका को कंटेनर में मैप कर सकते हैं ।
volumes:
- /path/to/your/host/directory:/var/lib/postgresql/data
Postgresql का डेटा /path/to/your/host/directory
में सेव किया जाएगा कंटेनर होस्ट का।
(B) बाहरी कंटेनर का उपयोग करें
docker-compose में बाहरी कंटेनर का विकल्प है। .जब इसे सही पर सेट किया जाता है, तो यह हमेशा वॉल्यूम नहीं बनाएगा। यहां एक उदाहरण दिया गया है।
version: '2'
services:
dbdata:
image: postgres:9.5.2
volumes:
- mypostgresdb:/var/lib/postgresql/data
volumes:
mypostgresdb:
external: true
external: true
के साथ , docker-compose mypostgredb
. नहीं बनाएगा वॉल्यूम, इसलिए आपको निम्न कमांड का उपयोग करके इसे स्वयं बनाना होगा:
docker volume create --name=mypostgredb
Postgresql का डेटा mypostgredb
. नाम के डॉकर वॉल्यूम में सेव किया जाएगा . पढ़ें संदर्भ
अधिक विवरण के लिए।