मैंने ट्यूटोरियल का एक गुच्छा देखा है जो ऐसा लगता है कि मैं वही करने की कोशिश कर रहा हूं, लेकिन किसी कारण से मेरे डॉकटर कंटेनर से बाहर निकल जाते हैं। असल में, मैं एक डॉकर कंटेनर के अंदर एक वेब-सर्वर और कुछ डेमॉन स्थापित कर रहा हूं। मैं इसके अंतिम भागों को बैश स्क्रिप्ट के run-all.shमाध्यम से करता हूं जिसे मैं अपने डॉकफाइल में सीएमडी के माध्यम से चलाता हूं। run-all.shइस तरह दिखता है:
service supervisor start
service nginx start
और मैं इसे अपने डॉकरफाइल के अंदर शुरू करता हूं:
CMD ["sh", "/root/credentialize_and_run.sh"]
मैं देख सकता हूं कि जब मैं मैन्युअल रूप से चीजें चलाता हूं (यानी -t / bin / bash के साथ इमेज में), तो सब कुछ सही ढंग से शुरू हो जाता है, और जब मैं इमेज को चलाता हूं तो सब कुछ ऐसा दिखता है कि यह सही तरीके से चलता है, लेकिन यह एक बार निकल जाता है यह मेरी प्रक्रियाओं को पूरा करता है। मैं अनिश्चित काल तक चलने वाली प्रक्रियाओं को पसंद करता हूं, और जहां तक मैं समझता हूं, ऐसा होने के लिए कंटेनर को चालू रखना होगा। फिर भी, जब मैं दौड़ता हूं, तो docker ps -aदेखता हूं:
➜ docker_test docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7706edc4189 some_name/some_repo:blah "sh /root/run-all.sh 8 minutes ago Exited (0) 8 minutes ago grave_jones
क्या देता है? क्यों निकल रहा है? मुझे पता है कि मैं इसे रखने के लिए अपनी बैश स्क्रिप्ट के अंत में थोड़ी देर का लूप डाल सकता हूं, लेकिन इसे बाहर निकालने के लिए सही तरीका क्या है?