2015-03-07 4 views
6

मेरे पास एक पायथन वेब एप्लिकेशन है जो Nginx के पीछे बैठता है, और Gunicorn के माध्यम से परोसा जाता है।डॉकराइज्ड पायथन वेब ऐप से स्थिर फ़ाइलों को कैसे सेवा दें?

मैंने इसे कॉन्फ़िगर किया है ताकि Nginx सर्वर डिस्क से सीधे स्थिर फाइलें और यह केवल छवियों जैसे स्थैतिक संपत्तियों के लिए गनीकोर्न से बात कर सके।

मेरे सवालों का:

  1. यह एक अच्छा विचार या एक बड़ी "नहीं" वेब अनुप्रयोग dockerize को स्थिर संपत्ति के साथ एक साथ है?

  2. यदि मैं अपने कंटेनर को 2 सर्वरों में तैनात करना चाहता हूं, जिसके लिए समान संपत्तियों तक पहुंच की आवश्यकता है, तो मैं स्थिर संपत्तियों को कंटेनरकृत ऐप की तरह पोर्टेबल कैसे बना सकता हूं?

मैं करना चाहते हैं क्या यदि संभव हो तो:

मैं एक कंटेनर में मेरे ऐप शामिल करना चाहते हैं और मैं अधिक धनराशि खर्च किए बिना, संभव के रूप में पोर्टेबल के रूप में इसे बनाने के लिए चाहते हैं छवियों को रखने के लिए एक अलग सर्वर जैसे (डीबी की तरह)

उत्तर

5

यदि आपको पता है कि आपका ऐप हमेशा एक ही स्थिर संपत्ति होगी, तो बस उन्हें ऐप के साथ कंटेनर करें और इसके साथ किया जाए ।

लेकिन चीजें बदलती हैं, इसलिए जब आपको इसकी आवश्यकता होती है तो मैं Docker Volume Container दृष्टिकोण की अनुशंसा करता हूं: अपनी स्थिर संपत्तियों को एक डीवीसी में रखें और मुख्य कंटेनर में डीवीसी को माउंट करें ताकि यह सब कुछ "केवल एक ऐप कंटेनर" हो। आप डोकर कुछ इस तरह लिखें इस्तेमाल कर सकते हैं:

appdata: 
    image: busybox 
    volumes: 
     - /path/to/app/static 
    command: echo "I'm just a volume container" 
app: 
    build: . 
    volumes_from: 
     - appdata 
    command: … 

आप एक बूटस्ट्रैप स्क्रिप्ट, जो स्टार्टअप पर गंतव्य पथ में प्रतियां आरंभिक स्थिर फाइलों के साथ अपने कंटेनर शुरू करने से आगे बढ़ा सकते हैं। इस तरह आपके ऐप को शुरू करने के लिए हमेशा एक डिफ़ॉल्ट सेट की गारंटी है, लेकिन ऐप बढ़ने के साथ ही आप अधिक स्थिर फाइलें जोड़ सकते हैं। इसके उदाहरण के लिए, आधिकारिक जेनकिन्स कंटेनर खींचें और /usr/local/bin/jenkins.sh पढ़ें।

+0

यह एक बहुत अच्छा विचार की तरह लगता है। मैं डीवीसी दृष्टिकोण की जांच करूंगा। इस बीच, यदि आप कृपया कर सकते हैं, तो क्या आप वेब-ऐप की अपलोड की गई छवियों को कैसे प्रबंधित करना है, इस पर ध्यान केंद्रित करने वाले उत्तर पर विस्तृत जानकारी दे सकते हैं?एक ब्लॉगपोस्ट में उत्पाद छवियों या छवियों को जोड़ने की कल्पना करें जो कई मशीनों पर कंटेनरों की तरह स्केल (पोर्टेबिलिटी) होनी चाहिए और मशीन से मशीन तक ले जाना आसान है। वह कैसे किया जा सकता है? धन्यवाद! – Phil

+0

@ फिल यदि आपके पास एक एकल डॉकर होस्ट है, तो आपके सभी ऐप कंटेनर स्थिर मीडिया तक पहुंचने के लिए डीवीसी साझा कर सकते हैं। यदि आपके पास एकाधिक डॉकर होस्ट हैं, क्योंकि अधिकांश बड़े पैमाने पर उत्पादन डॉकर सिस्टम करते हैं, तो उत्तर गैर-तुच्छ है। – kojiro

+0

पूर्व "गैर-तुच्छ" है। उत्तरार्द्ध वह है जो मैं अपने मूल प्रश्न में सीखने और समझने के लिए कह रहा हूं। – Phil

4

मैं kojiro से सहमत हूं, अगर चीजें ज्यादा नहीं बदलती हैं, तो अपने ऐप के साथ स्थिर फाइलें कंटेनर करें। आपके दूसरे प्रश्न के बारे में, ऐसा लगता है कि आपको लगता है कि डॉकर वॉल्यूम कंटेनर दृष्टिकोण अभी भी लचीला नहीं है क्योंकि आपके पास एकाधिक डॉकर होस्ट होंगे। शायद Flocker आपकी आवश्यकताओं को संबोधित करता है?

Flocker आप लिनक्स मेजबान के बीच एक साथ अपने डोकर कंटेनर और अपने डेटा स्थानांतरित करने देता है: Flocker डॉक्स (https://docs.clusterhq.com/en/0.3.2/) से। इसका मतलब है कि आप अपने डेटाबेस, कतार और कुंजी-मूल्य स्टोर को डॉकर में चला सकते हैं और उन्हें अपने शेष ऐप के रूप में आसानी से स्थानांतरित कर सकते हैं। यहां तक ​​कि स्टेटलेस ऐप्स कई राज्यव्यापी सेवाओं पर निर्भर करते हैं और वर्तमान में उत्पादन में डॉकर कंटेनर में इन सेवाओं को चलाने के लिए लगभग असंभव है। फ़्लॉकर का उद्देश्य द्वारा इस समस्या को हल करना है जो एक ऑर्केस्ट्रेशन फ्रेमवर्क प्रदान करता है जो आपको अपने वातावरण के बीच राज्यव्यापी और स्टेटलेस कंटेनर पोर्ट करने की अनुमति देता है।

+0

ikkjo, क्या यह मानना ​​सुरक्षित है कि यह एक ऐसी समस्या है जिसे अभी तक सार्वभौमिक रूप से हल नहीं किया गया है? पोर्टिंग/साझा करना/लगातार बदलती स्थिर संपत्तियों की सेवा करना (उदाहरण के लिए, अपलोड की गई छवियां)? मैं फ्लॉकर बीटीडब्ल्यू की जांच करूंगा -> धन्यवाद! – Phil

+0

कम से कम जो मैं समझता हूं उससे सार्वभौमिक हल नहीं होता है। मुझे यकीन नहीं है कि यह भी होगा। यहां तक ​​कि यदि आप डॉकर के बिना पारंपरिक क्लस्टर पर चल रहे थे, तो आपके पास अपनी जरूरतों के आधार पर डेटा और डेटा प्रतिकृति के बारे में क्या करना है, इसके बारे में अलग-अलग विकल्प होंगे, मुझे लगता है कि यह डॉकर दुनिया में समान है जहां कार्यान्वयन विभिन्न आवश्यकताओं के बीच एक व्यापार-बंद है । – ikkjo

+0

मैं देखता हूं। तो फिर सीडीएन पर बहुत पैसा खर्च करने के लिए बंद करो। – Phil

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