द docker-compose run
संदर्भ कहा गया है कि यह है --rm
विकल्प के लिए
चलाने के बाद कंटेनर निकालें ।
मैं इसे एक डिफ़ॉल्ट बनाना चाहता हूं run
मेरे द्वारा निर्दिष्ट कुछ सेवाओं के लिए व्यवहार docker-compose.yml
.
तो, सवाल हैं:
- क्या इसे किसी तरह निर्दिष्ट किया जा सकता है
docker-compose.yml
?
- अगर यह हो सकता है, तो मैं ऐसा कैसे कर सकता हूं?
(आईएनबी 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 साल बाद है । यह दूसरों को कुछ खोज से बचाएगा।
मेरे पास एक ही सवाल था और यहां मेरे द्वारा पाए गए वर्कअराउंड हैं(प्रश्न से ही एक सहित):
जो निम्नलिखित करता है:
कंटेनरों को रोकता है और कंटेनर, नेटवर्क, वॉल्यूम और यूपी द्वारा बनाई गई छवियों को हटा देता है ।
डिफ़ॉल्ट रूप से, केवल हटाई गई चीजें हैं:
- 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 web bash
[...] कमांड रन द्वारा पारित किया गया सेवा में परिभाषित कमांड को ओवरराइड करता है विन्यास।
[...] आदेश बंदरगाहों में से कोई भी नहीं बनाता है सेवा कॉन्फ़िगरेशन में निर्दिष्ट । यह पहले से खुले बंदरगाहों के साथ पोर्ट टकराव को रोकता है । यदि आप चाहते हैं कि सेवा के पोर्ट बनाए जाएं और मेजबान के लिए मैप किया गया, निर्दिष्ट करें -- सेवा-बंदरगाहों झंडा
- एफ, -- बल हटाने की पुष्टि करने के लिए न कहें
यह का हिस्सा नहीं है Dockerfile
या docker-compose.yml
युक्ति, यह रन कमांड के लिए केवल एक सीएलआई विकल्प है, इसलिए उत्तर नहीं है । लागू करने के लिए आपको किसी बाहरी चीज पर भरोसा करना होगा ।
यदि आपको अपनी परियोजना के लिए कुछ बिल्ड टूल मिला है, तो आमतौर पर इसके साथ डॉकर-कंपोज़ कार्यों को लपेटना सबसे अच्छा होता है । उदाहरण के लिए हमारी ग्रैडल परियोजनाएं डॉकर से संबंधित कार्य प्रदान करती हैं जो कुछ डिफ़ॉल्ट विकल्प सेट करती हैं जैसे --rm
रन कार्यों के लिए ।