2015-11-19 8 views
9

हाल ही में जब तक कोई कंटेनरों के समूह के लिए docker-compose up कर रहा था और प्रारंभिक कंटेनरों में से एक बंद हो गया था, तो सभी कंटेनर बंद कर दिए गए थे। यह अब https://github.com/docker/compose/issues/741 के बाद से मामला नहीं है और यह हमारे लिए वास्तव में कष्टप्रद है: हम सेलेनियम परीक्षण चलाने के लिए डॉकर-कंपोज़ का उपयोग करते हैं जिसका अर्थ है कि सेलेनियम हब + नोड्स से शुरू होने वाले एप्लिकेशन सर्वर शुरू करना, परीक्षण चालक शुरू करना, फिर परीक्षण चालक बंद होने पर बाहर निकलना।सभी कंटेनर को कैसे रोकें जब एक कंटेनर डॉकर-कंपोज़ के साथ बंद हो जाता है?

क्या पुराने व्यवहार को वापस पाने का कोई तरीका है?

उत्तर

5

क्या आपने दिए गए लिंक पर सुझाए गए काम को आजमाया है?

इस के समान अपने परीक्षण स्क्रिप्ट मान लिया जाये कि लग रहा था:

$ docker-compose rm -f 
$ docker-compose build 
$ docker-compose up --timeout 1 --no-build 

आवेदन परीक्षण अंत, रचना से बाहर निकल जाएगा और परीक्षण समाप्त होता है।

इस मामले में, नई docker-compose संस्करण के साथ, अपने परीक्षण कंटेनर एक डिफ़ॉल्ट कोई सेशन आदेश (गूंज की तरह कुछ है, या सही) है, और अपने परीक्षण स्क्रिप्ट बदलने के लिए निम्न प्रकार से परिवर्तित:

$ docker-compose rm -f 
$ docker-compose build 
$ docker-compose up --timeout 1 --no-build -d 
$ docker-compose run tests test_command... 
$ docker-compose stop 

रन का उपयोग करके आप परीक्षण चलाने से बाहर निकलने की स्थिति प्राप्त कर सकते हैं, और आप केवल परीक्षणों का आउटपुट देखते हैं (सभी निर्भरताओं नहीं)।

Reference

यदि यह स्वीकार्य नहीं है, तो आप Docker Remote API देखें और कंटेनरों और उस पर कार्य के लिए stop घटना के लिए देख सकते हैं।

एक उदाहरण उपयोग यह docker-gen उपकरण golang में लिखा गया है जो watches for container start events स्वचालित रूप से कॉन्फ़िगरेशन फ़ाइलों को पुन: उत्पन्न करने के लिए है।

+0

धन्यवाद एक बहुत महान टिप के लिए। नहीं, मैंने अभी तक सुझाए गए कामकाज की कोशिश नहीं की है और आप के साथ ईमानदार होने के लिए मैंने यह समझने के लिए पर्याप्त रूप से पर्याप्त लिंक नहीं पढ़ा है कि मेरे सामने एक कामकाज था! मैं उस एप की कोशिश करूंगा। – insitu

+0

महान काम करता है, धन्यवाद। – insitu

+1

जानना एक और महत्वपूर्ण बात है: दुख की बात है कि 'डॉकर-कंपोज़ रन फू' कमांड आपके 'foo' सेवा (डॉकर-रचना 1.8.0-आरसी 1) के उपनाम सेट नहीं करता है। Https://github.com/docker/compose/issues/3492#issuecomment-230931596 – jineff

0

मुझे यकीन नहीं है कि यह आपकी समस्या का सही उत्तर है, लेकिन डॉकर के लिए maestro, आपको एकल इकाई के रूप में मल्टीप्ल डॉकर कंटेनर प्रबंधित करने देता है।

यह परिचित होना चाहिए क्योंकि आप उन्हें YAML फ़ाइल का उपयोग करके समूहित करते हैं।

+0

लिंक के लिए धन्यवाद देखें – insitu

22

आप उपयोग कर सकते हैं:

अप डोकर-रचना --abort-ऑन-कंटेनर-बाहर निकलें

कौन सा सभी कंटेनर बंद हो जाएगा अपने कंटेनर में से एक बंद हो जाता है, तो

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