मेरे पास मेरे कंटेनर में /srv
के तहत मेरी सभी वेबसाइटों का कोड है।विकास में डॉकर कंटेनर में कोड कैसे संपादित करें?
मेरा डॉकरफ़ाइल गिट का उपयोग करके कोड डाउनलोड करता है और इसे उत्पादन के लिए आसान तैनाती के लिए छवि का हिस्सा बनाता है।
लेकिन फिर मैं विकास में कोड कैसे संपादित करूं? मैंने सोचा कि वॉल्यूम का उपयोग समाधान था, उदाहरण के लिए: -v /docker/mycontainer/srv:/srv
। लेकिन यह कंटेनर में निर्देशिका को ओवरराइट करता है। अगर यह पहली बार है कि मैं इसे चलाता हूं तो यह खाली हो जाता है क्योंकि मेजबान में कुछ भी नहीं है। तो जो भी मैंने डॉकरफाइल में किया था वह खो गया था।
/srv/myapp
के अंदर निर्देशिका और फ़ाइलें भी हैं जिन्हें मैं अपने ऐप के विभिन्न संस्करणों में साझा करना चाहता हूं, उदाहरण के लिए: /srv/myapp/user-uploads
। पेशेवर वेब विकास में यह common practice है।
तो क्या मैं विकास में इन सब बातों ?:/SRV में
- संपादित कोड करने के लिए सक्षम होने के लिए क्या कर सकते हैं
- शेयर/SRV/MyApp विभिन्न संस्करणों के पार/उपयोगकर्ता के अपलोड
- डॉकरफाइल कोड डाउनलोड करने दें। डॉकर के बाहर "गिट क्लोन" या "गिट पुल" करना मेरी राय में डॉकर के उद्देश्य को हरा देगा। इसके अलावा ऐसी चीजें हैं जिन्हें मैं मेजबान में नहीं चला सकता, जैसे डेटाबेस माइग्रेशन या अन्य ऐप-विशिष्ट स्क्रिप्ट्स।
क्या रिवर्स वॉल्यूम माउंट करने का कोई तरीका है? मेरा मतलब है कि कंटेनर विपरीत के बजाए मेजबान को ओवरराइट करें।
मुझे लगता है कि कंटेनर के डिमन को चलाने से पहले एक soluiton /sv /srv.deployment-copy पर कॉपी/srv हो सकता है। और फिर जब मैं डिमन जांच चलाता हूं तो /srv.deployment-copy मौजूद है और सबकुछ वापस/srv पर कॉपी करें। इस तरह मैं वॉल्यूम के रूप में/srv का उपयोग कर सकता हूं और अभी भी डॉकरफ़ाइल के साथ कोड को तैनात करने में सक्षम हूं। मैं पहले से ही सभी डॉकर कमांड के लिए उपनाम का उपयोग कर रहा हूं इसलिए इसे स्वचालित करना कोई समस्या नहीं होगी। तुम क्या सोचते हो?
वेब ऐप फ़ोल्डर में उपयोगकर्ता डेटा संग्रहीत करना बिल्कुल सामान्य अभ्यास नहीं है। यह सब कुछ जटिल कारण के साथ जटिल बनाता है। – rightfold
हां गिट क्लोन और डॉकर के बाहर गिट खींचना पूरी तरह से सामान्य है। मैं ऐसा करता हूं। कंटेनर बस एक कंटेनर है। ऐप कोड बदलता है और एक अलग रेपो में रखा जाता है। माइग्रेशन और अन्य ऐप विशिष्ट कमांड आसानी से exec कमांड का उपयोग करके चलाया जा सकता है जो आपको चल रहे कंटेनर में कमांड चलाने की अनुमति देता है। – Kevin