मैं डॉकर के लिए नया हूं और डॉकर कंपोज़ का उपयोग करके एक प्रोजेक्ट विकसित करना चाहता हूं। प्रलेखन से मैंने सीखा है कि डेटा को लगातार रखने के लिए मुझे डेटा केवल कंटेनर का उपयोग करना चाहिए, लेकिन मैं डॉकर-कंपोज़ का उपयोग करके ऐसा करने में असमर्थ हूं। जब भी मैं docker-compose down
करता हूं तो यह डेटा को डीबी से हटा देता है लेकिन docker-compose stop
करके डेटा हटाया नहीं जाता है। ऐसा इसलिए हो सकता है क्योंकि मैं नामित डेटा वॉल्यूम नहीं बना रहा हूं और docker-compose down
सभी कंटेनरों को शायद ही हटा देता है। इसलिए मैंने कंटेनर नामकरण करने की कोशिश की लेकिन उसने मुझे त्रुटियों को फेंक दिया। कृपया मेरे yml
फ़ाइल पर एक नजर है:डॉकर लिखें - डेटाबेस डेटा कैसे स्टोर करें?
version: '2'
services:
data_container:
build: ./data
#volumes:
# - dataVolume:/data
db:
build: ./db
ports:
- "5445:5432"
environment:
- POSTGRES_USER=postgres
- POSTGRES_DB=postgres
# - PGDATA=/var/lib/postgresql/data/pgdata
volumes_from:
# - container:db_bus
- data_container
geoserver:
build: ./geoserver
depends_on:
- db
ports:
- "8004:8080"
volumes:
- ./geoserver/data:/opt/geoserverdata_dir
web:
build: ./web
volumes:
- ./web:/code
ports:
- "8000:8000"
depends_on:
- db
command: python manage.py runserver 0.0.0.0:8000
nginx:
build: ./nginx
ports:
- "83:80"
depends_on:
- web
डोकर data_container के लिए फ़ाइल है:
FROM stackbrew/busybox:latest
MAINTAINER Tom Offermann <[email protected]>
# Create data directory
RUN mkdir /data
# Create /data volume
VOLUME /data
मैं इस कोशिश की, लेकिन ऐसा करके डोकर-रचना नीचे, डेटा खो दिया है।
ERROR: Named volume "dataVolume:/data:rw" is used in service "data_container" but no declaration was found in the volumes section.
तो अभी मैं क्या कर रहा हूँ है मैं योग्य स्वतंत्र डेटा केवल कंटेनर नाम बनाया और डाल कि volumes_from
मूल्य में: मैं data_container नामकरण के रूप में आप टिप्पणी की लाइन देख सकते हैं की कोशिश की, यह मुझे इस त्रुटि फेंक दिया डीबी के। यह ठीक काम करता है और docker-compose down
करने के बाद भी कोई डेटा नहीं हटाता है।
मेरे प्रश्नों:
सबसे अच्छा तरीका कंटेनरों कि
docker-compose
और उन्हें ठीक से उपयोग करने का उपयोग कर डेटाबेस के डेटा स्टोर कर सकते हैं बनाने के लिए क्या है?मेरा सचेतक मेरे द्वारा चुने गए दृष्टिकोण पर मुझसे सहमत नहीं है, एक स्टैंड स्टैंड अकेले डेटा कंटेनर बनाकर। कोई विचार?
वहाँ एक कारण है कि आप 'संस्करणों की तरह, अपने डेटा के लिए नामित किया गया मात्रा का उपयोग नहीं करना चाहते है:
आप डोकर-लिखें फ़ाइल संदर्भ यहाँ के साथ और अधिक जानकारी हो सकती है mydata:/var/lib/postgresql/data/pgdata' जो डाटा कंटेनर वॉल्यूम्स पर पसंदीदा तरीका है। – ldg
मैंने ऐसा करने की कोशिश की है और यह मुझे त्रुटि फेंकता है: 'त्रुटि: नामित वॉल्यूम "डेटा वॉल्यूम:/डेटा: आरडब्ल्यू" सेवा "डेटा_कॉन्टेनर" में प्रयोग किया जाता है लेकिन खंड खंड में कोई घोषणा नहीं मिली।' मैं डेटा पोर्टेबिलिटी के बारे में भी उत्सुक हूं इस दृष्टिकोण का उपयोग कर। –