मुझे LAMP स्टैक, मोंगो डीबी और अपनी सेवाओं को चलाने की समान आवश्यकता थी
डॉकर ओएस आधारित वर्चुअलाइजेशन है, यही कारण है कि यह अपने कंटेनर को एक चल रही प्रक्रिया के आसपास अलग करता है, इसलिए इसे FOREGROUND में चलने वाली कम से कम एक प्रक्रिया की आवश्यकता होती है।
इसलिए आप अपनी स्वयं की स्टार्टअप स्क्रिप्ट को प्रवेश बिंदु के रूप में प्रदान करते हैं, इस प्रकार आपकी स्टार्टअप स्क्रिप्ट एक विस्तारित डॉकर छवि स्क्रिप्ट बन जाती है, जिसमें आप जितनी भी सेवाएँ ले सकते हैं , उनमें से कम से कम एक वन सेवा की सेवा शुरू की गई है, जो अंत तक जारी रहेगी।
तो मेरी डॉकर छवि फ़ाइल में बहुत अंत में दो लाइन नीचे हैं:
COPY myStartupScript.sh /usr/local/myscripts/myStartupScript.sh
CMD ["/bin/bash", "/usr/local/myscripts/myStartupScript.sh"]
अपनी स्क्रिप्ट में मैं सभी MySQL, MongoDB, Tomcat आदि चलाता हूं। अंत में मैं अपनी अपाचे को अग्रभूमि के धागे के रूप में चलाता हूं।
source /etc/apache2/envvars
/usr/sbin/apache2 -DFOREGROUND
यह मुझे अपनी सभी सेवाओं को शुरू करने और कंटेनर को जीवित रखने के लिए सक्षम बनाता है और अंतिम सेवा अग्रभूमि में होने लगी
आशा करता हूँ की ये काम करेगा
अद्यतन : जब से मैंने आखिरी बार इस प्रश्न का उत्तर दिया है, नई चीजें सामने आई हैं जैसे डॉकटर कम्पोज़ , जो आपको अपने कंटेनर पर प्रत्येक सेवा को चलाने में मदद कर सकता है, फिर भी उन सभी को उन सेवाओं के बीच निर्भरता के रूप में एक साथ बाँध सकता है, डॉकटर-कम्पोज़ और के बारे में अधिक जानने का प्रयास करें। इसका उपयोग करें, यह अधिक सुरुचिपूर्ण तरीका है जब तक कि आपकी आवश्यकता इसके साथ मेल नहीं खाती।