डॉकर-कंपोज़: डॉकर-कंपोज़ में चलाने के बाद कंटेनर को स्वचालित रूप से हटाने का विकल्प । yml

docker-compose run संदर्भ कहा गया है कि यह है --rm विकल्प के लिए

चलाने के बाद कंटेनर निकालें ।

मैं इसे एक डिफ़ॉल्ट बनाना चाहता हूं run मेरे द्वारा निर्दिष्ट कुछ सेवाओं के लिए व्यवहार docker-compose.yml.

तो, सवाल हैं:

  1. क्या इसे किसी तरह निर्दिष्ट किया जा सकता है docker-compose.yml?
  2. अगर यह हो सकता है, तो मैं ऐसा कैसे कर सकता हूं?

(आईएनबी 4 " बैश उपनाम, ल्यूक का उपयोग करें!": बेशक मैं इसे बाहर लागू कर सकता हूं docker-compose.yml जैसे कुछ बैश उपनाम सेट करके alias docker-compose-run='docker-compose run --rm' लेकिन मुझे इस बात में दिलचस्पी है कि मैं इसे ठीक से कैसे लागू कर सकता हूं docker-compose.yml नहीं , कुछ extrnal तरीका है । )

TLDR: यह अभी भी संभव नहीं 2018-11; प्रयोग करें docker-compose down या docker-compose run --rm

मैं इस प्रश्न का अद्यतन उत्तर देना चाहता हूं क्योंकि यह लगभग 3 साल बाद है । यह दूसरों को कुछ खोज से बचाएगा।

मेरे पास एक ही सवाल था और यहां मेरे द्वारा पाए गए वर्कअराउंड हैं(प्रश्न से ही एक सहित):

docker-compose down

जो निम्नलिखित करता है:

कंटेनरों को रोकता है और कंटेनर, नेटवर्क, वॉल्यूम और यूपी द्वारा बनाई गई छवियों को हटा देता है ।

डिफ़ॉल्ट रूप से, केवल हटाई गई चीजें हैं:

- Containers for services defined in the Compose file- Networks defined in the networks section of the Compose file- The default network, if one is used

बाहरी के रूप में परिभाषित नेटवर्क और वॉल्यूम कभी नहीं हटाए जाते हैं ।

यद्यपि आप इसे घोषित नहीं कर सकते docker-compose.yml यह आपको कुछ परेशानी सुरक्षित करेगा; विशेष रूप से वॉल्यूम और नेटवर्क के साथ ।

docker-compose run --rm

-- आरएम-रन के बाद कंटेनर निकालें । अलग मोड में नजरअंदाज कर दिया ।

एक सेवा के खिलाफ एक बार कमांड चलाता है । उदाहरण के लिए, निम्न कमांड वेब सेवा शुरू करता है और बैश को इसके कमांड के रूप में चलाता है ।

docker-compose run web bash

[...] कमांड रन द्वारा पारित किया गया सेवा में परिभाषित कमांड को ओवरराइड करता है विन्यास।

[...] आदेश बंदरगाहों में से कोई भी नहीं बनाता है सेवा कॉन्फ़िगरेशन में निर्दिष्ट । यह पहले से खुले बंदरगाहों के साथ पोर्ट टकराव को रोकता है । यदि आप चाहते हैं कि सेवा के पोर्ट बनाए जाएं और मेजबान के लिए मैप किया गया, निर्दिष्ट करें -- सेवा-बंदरगाहों झंडा

docker-compose rm -f

- एफ, -- बल हटाने की पुष्टि करने के लिए न कहें

यह का हिस्सा नहीं है Dockerfile या docker-compose.yml युक्ति, यह रन कमांड के लिए केवल एक सीएलआई विकल्प है, इसलिए उत्तर नहीं है । लागू करने के लिए आपको किसी बाहरी चीज पर भरोसा करना होगा ।

यदि आपको अपनी परियोजना के लिए कुछ बिल्ड टूल मिला है, तो आमतौर पर इसके साथ डॉकर-कंपोज़ कार्यों को लपेटना सबसे अच्छा होता है । उदाहरण के लिए हमारी ग्रैडल परियोजनाएं डॉकर से संबंधित कार्य प्रदान करती हैं जो कुछ डिफ़ॉल्ट विकल्प सेट करती हैं जैसे --rm रन कार्यों के लिए ।