docker-compose: docker-compose.yml में चलाने के बाद ऑटोमैटिक को हटाने वाले कंटेनर का विकल्प


24

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

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

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

तो, प्रश्न हैं :

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

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

जवाबों:


10

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

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

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

docker-compose run web bash

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

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

docker-compose rm -f

-f, --force हटाने की पुष्टि करने के लिए मत पूछो


8

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.