मल्टी-स्टेज बिल्ड के समर्थन से, रेपो को एक बिंदु तक बनाए रखना सुविधाजनक हो गया है। लेकिन आप इन रेपो का विस्तार कैसे कर सकते हैं?
अब तक, आप docker build
कमांड में --target
का उपयोग करके किसी विशिष्ट टैग की छवि बना सकते हैं।
Docker-compose से, आप इसे निर्दिष्ट करने के लिए context
प्रविष्टि में target
प्रविष्टि का उपयोग कर सकते हैं।
मेरे मामले में, मैं डॉकर हब से एक छवि का उपयोग करना चाहता हूं और एक विशिष्ट लक्ष्य का विस्तार करना चाहता हूं। अभी, मैं एक डॉकरफाइल का उपयोग कर रहा हूं (जिसे मैं डॉकर-कंपोज़ से कॉल करता हूं लेकिन इससे कोई फर्क नहीं पड़ता) जिसमें है
FROM repo/sample-name
DO my stuff
उस रेपो के अपने डॉकरफाइल में 3 लक्ष्य हैं जिनका नाम sample-name
, sample-name-full
है जो sample-name
और sample-name-dev
का विस्तार करता है जो sample-name-full
का विस्तार करता है। इन नामों में डैश ठीक वैसे ही हैं जैसे रेपो ने अपना लक्ष्य रखा है।
ऐसा प्रतीत होता है कि मुझे पहला लक्ष्य निर्माण लक्ष्य (या मुझे लगता है कि मैं करता हूं) के रूप में प्राप्त कर रहा हूं जिसका नाम रेपो के नाम पर रखा गया है। मैं, मान लीजिए, मध्यवर्ती लक्ष्य को कैसे बढ़ा सकता हूं?
मैंने सामान की कोशिश की
FROM repo/sample-name:latest-sample-name-dev
आदि लेकिन मैं इसे काम नहीं कर सका।
1 उत्तर
यह डिजाइन द्वारा संभव नहीं है। मल्टी-स्टेज बिल्ड का एक फायदा इंटरमीडिएट स्टेज को छिपाना है, एक उदाहरण हो सकता है कि पहले चरण में हार्ड कोडेड क्रेडेंशियल के साथ कुछ डाउनलोड किया जाए और फिर दूसरे चरण में उससे परिणाम कॉपी किया जाए। अंतिम छवि, जैसा कि डॉकरहब पर उपलब्ध है, जाहिरा तौर पर सिंगल-स्टेज निर्मित है। अधिकांश समय आप इसके बारे में चिंता नहीं करेंगे क्योंकि अंतिम चरण ने पिछले वाले से सभी उपयोगी चीजें हासिल कर ली हैं।