2016-07-02 13 views
8

डॉकर-कंपोज़ फ़ाइल https://docs.docker.com/compose/compose-file/#/volumes-volume-driver रचना फ़ाइल के सापेक्ष मेजबान उप-निर्देशिकाओं को माउंट करने के विभिन्न तरीकों को दिखाती है।क्या हम डॉकर में नामित वॉल्यूम की उप-निर्देशिकाओं को माउंट कर सकते हैं?

उदाहरण के लिए:

मात्रा: # बस एक पथ निर्दिष्ट और इंजन एक मात्रा बना सकते हैं -/var/lib/mysql

# एक निरपेक्ष पथ मैपिंग निर्दिष्ट -/opt/डेटा:/var/lib/mysql

मेजबान पर

# पथ, लिखें के सापेक्ष फ़ाइल - ./cache:/tmp/cache

# प्रयोक्ता -relative पथ - ~/कॉन्फ़िगरेशन:/etc/कॉन्फ़िगरेशन /: ro

# नामांकित मात्रा - datavolume:/var/lib/mysql

है एक की एक उप-निर्देशिका माउंट करने के लिए संभव है एक विशिष्ट स्थान पर नामित मात्रा? उदाहरण के लिए नीचे की तरह कुछ, जिसकी मैंने कोशिश की, लेकिन काम नहीं लग रहा है।

# Named volume 
    - datavolume/sql_data:/var/lib/mysql 

मैं मैं, प्रत्येक कंटेनर के लिए Dockerfiles में /data की तरह एक स्थान पर डेटा की मात्रा बढ़ते और उसके बाद से इस का प्रबंधन स्थानों के लिए एक उप-निर्देशिका से सांकेतिक लिंक बनाने के लिए सक्षम हो सकता है यह सोचते हैं रहा हूँ।

एक डोकर-compose.yml फ़ाइल में उदाहरण के लिए

volumes: 
    - datavolume:/data 

और फिर कंटेनर Dockerfile

RUN ln -s /data/sql_data /var/lib/mysql 

मैं इस मार्ग नीचे जा रहा है, लेकिन यह गंदा हो रही थी और काम कर रहा था शुरू कर दिया है। इससे पहले कि मैं या तो उस दृष्टिकोण को छोड़ दूं या इसे डिबग करने का समय निवेश करूँ, मैं यह सुनिश्चित करना चाहता था कि नामित वोल्यूम की उप-निर्देशिका निर्दिष्ट करने का कोई तरीका न हो।

उत्तर

12

नहीं क्योंकि compose/config/config.py#load(config_details) जांच अगर datavolume/sql_data एक नामित मात्रा से मेल खाता है (compose/config/validation.py#match_named_volumes() में)

datavolume होगा, datavolume/sql_data नहीं होगा।

+2

यह सुविधा शानदार होगी। अधिक नामित वॉल्यूम प्रदूषित करने के बजाए समान कार्यक्षमता की तलाश भी करें। – raupie

संबंधित मुद्दे