2015-10-12 26 views
5

आधिकारिक MySQL डॉकर छवि का उपयोग करके वॉल्यूम कॉन्फ़िगरेशन को अनदेखा करती है, मुझे समझ में नहीं आता कि होस्ट निर्देशिका को किसी निर्दिष्ट बिंदु पर कैसे माउंट करना है। छवि के The Dockerfile सेटMySQL छवि डॉकर-compose.yml

VOLUME /var/lib/mysql 

तो डेटाबेस डेटा संग्रहित किया जाना चाहिए "कहीं" मेजबान पर। मैं अपने डोकर-लिखें फ़ाइल में अधिक विशिष्ट होना चाहते हैं, तो मैं निम्नलिखित की कोशिश की:

mysql: 
    image: mysql:5.7 
    environment: 
    - MYSQL_ROOT_PASSWORD=password 
    - MYSQL_DATABASE=mydb 
    volumes: 
    - ./database/mysql:/var/lib/mysql 

docker-compose up सब कुछ ठीक काम करता है, लेकिन मेजबान पर ./database/mysql निर्देशिका खाली रहता है, जबकि/var के साथ शुरू कंटेनर में/lib/mysql डेटा है। क्या मेरी विन्यास में कोई समस्या है? या क्या मैं गलत समझता हूं कि वॉल्यूम का उपयोग कैसे करें?

उत्तर

9

docker-compose हमेशा डेटा वॉल्यूम को सुरक्षित रखने का प्रयास करेगा, ताकि आप उनके भीतर कोई डेटा न खोएं। यदि आपने डेटा वॉल्यूम के साथ शुरुआत की है, तो होस्ट वॉल्यूम में बदल दिया गया है, तो भी आपको डेटा वॉल्यूम मिल सकता है।

इसे ठीक करने के लिए, docker-compose stop && docker-compose rm -f चलाएं, जो आपके कंटेनर और आपके डेटा वॉल्यूम को हटा देगा (इससे आपके डेटा वॉल्यूम्स में कोई भी डेटा मिटा देगा)। अगले docker-compose up पर, आपको होस्ट वॉल्यूम का उपयोग करके इसे देखना चाहिए।

संपादित करें: लिखें 1.6 के रूप में आप ऊपर दिए गए दो आदेशों के बजाय docker-compose stop -v चला सकते हैं।

+0

आप सही हैं, यही बात है। समाधान + स्पष्टीकरण के लिए धन्यवाद! –

+0

धन्यवाद! मेरा दिन बचाओ! –