2016-07-03 11 views
9

टैगिंग के लिए सर्वोत्तम प्रथाएं क्या हैं मेरे पास एक डॉकर हब कंटेनर है जो एप्लिकेशन चलाता है। आम तौर पर यह स्रोत गिट रेपो क्लोन करके एप्लिकेशन चलाएगा लेकिन इस मामले में कि मैं एक विशिष्ट संस्करण चलाने के लिए चाहता हूं, एप्लिकेशन ने विभिन्न रिलीज टैग किए हैं। उदाहरण के लिए मैं एकडॉकर हब संस्करण

git clone https://github.com/author/application.git 
git checkout release-1.0.0 

डोकर हब मेंटेनर के रूप में कर सकते हैं, मैं कंटेनर के साथ सॉफ्टवेयर के रिलीज मिरर करना चाहते हैं। क्या रिलीज होने पर मैन्युअल रूप से इसे करने के अलावा कोई अन्य विकल्प हैं?

अभी मेरी Dockerfile कुछ इस तरह होती है:

ENV APP_VER=2.0.0 
RUN git clone ...; git checkout ${APP_VER} 

इस उदाहरण में, मैं एक डोकर फ़ाइल कि 2.1.0 के लिए APP_VER सेट और फिर डोकर हब कि समर्थन करता है, की एक टैग शाखा रखने होगा, लेकिन अगर मैं रेपो में बदलाव करता हूं, तो यह स्पष्ट नहीं है कि मैं प्रत्येक शाखा के उस डॉकरफाइल में परिवर्तन कैसे नहीं करूंगा।

+1

यदि यह गितूब में टैग किया गया है, तो फ़ाइल बदली नहीं जाएगी क्योंकि आप टैग की गई फ़ाइल से लिंक करेंगे, नहीं? उदा।, [Nginx] (https://hub.docker.com/r/_/nginx/)। – ldg

+0

हाँ आपको प्रत्येक संस्करण के लिए फ़ाइल को बदलना है जो ऐसा लगता है कि nginx ऐसा कर रहा था – Lizbeth

उत्तर

2

आप क्या आप डोकर हब के स्वचालित बिल्ड के माध्यम से और निर्माण सेटिंग्स में वर्णन कर रहे हैं, अपनी Github टैग नाम और डोकर टैग नाम के बीच मिलान पैटर्न सेट करने के लिए सक्षम होना चाहिए। आप वाइल्डकार्ड और वेरिएबल {sourceref} `का उपयोग कर सकते हैं, जो स्रोत शाखा/टैग नाम को संदर्भित करता है"।

जब भी आप एक गॉथब टैग से मेल खाने वाले डॉकर टैग के साथ एक नई छवि को दबाते हैं, तो यह मिलान करने वाले डॉकरफाइल को खींच देगा - पिछले टैग छूटे रहेंगे। तो किसी के रूप में आप का उल्लेख एक संदर्भ के रूप टैग का उपयोग करके एक पुराने डोकर छवि और मिलान Github कोड खींच सकते हैं: इस मामले में

ENV APP_VER=2.1.0 
RUN git clone ... app.git; git -C app checkout ${APP_VER} 

, यह आप है डोकर हब मूल्यों और प्रत्येक टैग मिलान के लिए निर्धारित हो जाती है (डॉकर छवि और गिथब) 2.1.0

मुझे सच में यकीन नहीं है कि "प्रत्येक शाखा" से आपका क्या मतलब है, जो भ्रम का हिस्सा हो सकता है, खासकर अगर आप एसवीएन में उपयोग किए जाते हैं। गिट में, एक टैग किसी शाखा से बंधी नहीं है बल्कि एक विशिष्ट प्रतिबद्धता (या ~ समय में बिंदु) है, इसलिए जब आप उस टैग को पुनर्प्राप्त करते हैं, तो यह हमेशा कोड के उसी संस्करण का उपयोग करने जा रहा है जैसा कि वह प्रतिबद्ध था बनाया गया। (आमतौर पर एक रिलीज के रूप में एक ही समय में कटौती की गई थी।)

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