डॉकफाइल्स का नाम कैसे रखा जाए


140

मैं अनिश्चित हूं कि डॉकफाइल्स का नाम कैसे रखा जाए। GitHub पर कई Dockerfileफ़ाइल एक्सटेंशन के बिना उपयोग करते हैं । क्या मैं उन्हें नाम और विस्तार दूं; यदि ऐसा है तो क्या? या मैं सिर्फ उन्हें फोन करता हूं Dockerfile?

जवाबों:


165

यदि आप autobuilder का उपयोग करना चाहते हैं do.dfer.com पर dockerfile का नाम न बदलें। डॉक फ़ाइलों के लिए एक्सटेंशन का उपयोग न करें, इसे शून्य छोड़ दें। फ़ाइल नाम बस होना चाहिए: (कोई विस्तार नहीं)

Dockerfile

हालाँकि, आप नीचे भी पसंद कर सकते हैं ...

dev.Dockerfile, uat.Dockerfile, prod.Dockerfileआदि

VS कोड पर आप इसका उपयोग कर सकते हैं <purpose>.Dockerfileऔर यह उसी के अनुसार काम करता है।


83
जब आपके पास एक ही निर्देशिका में कई डॉकफाइल्स होते हैं, तो क्या होगा?
विसेन स्केलोरू

@VisgeanSkeloru हालांकि थोड़ी सी परेशानी से आप उन्हें अलग-अलग निर्देशिकाओं में डाल सकते हैं, अगर जरूरत हो, तो कोई फर्क नहीं पड़ता कि मैंने कहां देखा है कि यह पहले से ही स्थापित किया गया सम्मेलन है
orustammanapov

2
@VisgeanSkeloru एक ही निर्देशिका में कई डॉकफाइल्स नहीं है। युक्त निर्देशिका कमांड के लिए संदर्भ बन जाती है docker build, जिसका अर्थ है कि प्रत्येक छवि को अनावश्यक रूप से फिर से बनाया जाएगा यदि किसी अन्य छवि के डॉकफाइल को बदल दिया जाए।
थॉमस

6
@ कई बार आपको अलग-अलग कंटेनरों में आम फ़ाइलों को साझा करने के लिए एक ही डायरेक्टरी में कई डॉकफ़ाइल्स को रखने की आवश्यकता होती है, क्योंकि docker संदर्भ "../some-common-stuff" तक पहुंचने की अनुमति नहीं देता है
Devis L.

क्या "डी" को पूंजीकृत किया जाना है या इससे कोई फर्क नहीं पड़ता है?
NoName

51

dev.Dockerfile, test.Dockerfile, build.Dockerfileआदि

वीएस कोड पर मैं उपयोग करता हूं <purpose>.Dockerfileऔर यह सही तरीके से पहचाना जाता है।


27

मुझे लगता है कि आपके पास इसमें एक डॉकरीफाइल (कोई विस्तार नहीं) के साथ प्रति कंटेनर एक निर्देशिका होनी चाहिए। उदाहरण के लिए:

  /db/Dockerfile
  /web/Dockerfile
  /api/Dockerfile

जब आप केवल डायरेक्टरी नाम का उपयोग करते हैं, तो डॉकर को डॉकरफाइल मिलेगा। उदाहरण के लिए:

docker build -f ./db .

क्या यह आपके उदाहरण से 3 कंटेनरों का निर्माण करेगा?
अल्व्स

@alvas हाँ, यह होगा
garryp

4
यह बहुत सारे मामलों में अच्छा नहीं है। डॉकर फाइलों को नहीं देख सकता है। उदाहरण के लिए लक्ष्य, निर्माण, आदि
Cyva

क्या हम डॉक-कंपोज़ कमांड का उपयोग करके इस 3 डॉक फ़ाइल को एक बार में चला सकते हैं?
योगी घोराचार्य

16

यदि आप hub.docker.com पर autobuilder का उपयोग करना चाहते हैं, तो यह होना चाहिए Dockerfile । इसलिए वहाँ :)


3
मेरा मानना ​​है कि प्रश्न का संदर्भ अधिक व्यापक था। शायद आप इस उत्तर को और अधिक पूर्ण बनाने के लिए ऑटोबॉइल का उपयोग नहीं करने वाले व्यक्तियों के लिए अतिरिक्त जानकारी शामिल कर सकते हैं ।
जोश हबदास

16

ऐसा लगता है कि यह सच है लेकिन, व्यक्तिगत रूप से, यह मुझे खराब डिजाइन लगता है। निश्चित रूप से, एक डिफ़ॉल्ट नाम (एक्सटेंशन के साथ) है, लेकिन अन्य नामों की अनुमति दें और कमांड के लिए docker फ़ाइल के नाम को निर्दिष्ट करने का एक तरीका है।

एक्सटेंशन होना भी अच्छा है क्योंकि यह एप्लिकेशन को उस एक्सटेंशन प्रकार से संबद्ध करने की अनुमति देता है। जब मैं MacOSX में एक डॉकरफाइल पर क्लिक करता हूं तो यह इसे यूनिक्स एक्जीक्यूटेबल के रूप में मानता है और इसे चलाने की कोशिश करता है।

अगर डॉकर फाइलों में एक्सटेंशन होता है, तो मैं ओएस को उन्हें एक विशेष एप्लिकेशन के साथ शुरू करने के लिए कह सकता हूं, जैसे मेरा टेक्स्ट एडिटर एप्लीकेशन। मुझे यकीन नहीं है लेकिन वर्तमान व्यवहार भी फ़ाइल अनुमति से संबंधित हो सकता है।


15

मैंने एक ही निर्देशिका में दो डॉकफाइल्स बनाई हैं,

# vi one.Dockerfile
# vi two.Dockerfile

दोनों डॉकफाइल्स का उपयोग करने के लिए,

# docker build . -f one.Dockerfile
# docker build . -f two.Dockerfile

नोट: आपको वर्तमान कार्यशील निर्देशिका में होना चाहिए।


10

क्या मैं उन्हें नाम और विस्तार दूं; यदि ऐसा है तो क्या?

आपको अपनी पसंद के अनुसार अपने डॉकफाइल्स का नाम दे सकते हैं। डिफ़ॉल्ट फ़ाइल नाम हैDockerfile (बिना एक्सटेंशन के) है, और डिफ़ॉल्ट का उपयोग कंटेनर के साथ काम करते समय विभिन्न कार्यों को आसान बना सकता है।

अपनी विशिष्ट आवश्यकताओं के आधार पर आप फ़ाइल नाम बदलना चाह सकते हैं। यदि आप कई आर्किटेक्चर के लिए निर्माण कर रहे हैं, उदाहरण के लिए, आप आर्किटेक्चर को इंगित करते हुए एक एक्सटेंशन जोड़ना चाह सकते हैं क्योंकि राल । Hioroxy कंटेनर उनके मल्टी-कंटेनर ARM उदाहरण के लिए टीम ने किया है :

Dockerfile.aarch64
Dockerfile.amd64
Dockerfile.armhf
Dockerfile.armv7hf
Dockerfile.i386
Dockerfile.i386-nlp
Dockerfile.rpi

प्रदान किए गए उदाहरण में, प्रत्येक डॉकरफाइल एक अलग, वास्तुकला-विशिष्ट, अपस्ट्रीम छवि से बनाता है। निर्माण के लिए उपयोग करने के लिए विशिष्ट डॉकफाइल को कमांड लाइन का उपयोग करके अपने कंटेनर का निर्माण करते समय --file, -fविकल्प का उपयोग करके निर्दिष्ट किया जा सकता है ।


1
मुझे आर्किटेक्चर (या जो भी) इंगित करने के लिए एक एक्सटेंशन का उपयोग करना पसंद है। कुछ अन्य उत्तरों के विपरीत, सभी डॉकरफाइल्स एक बड़े, बरबाद निर्देशिका में खोजने के लिए सरल मृत हैं; वे स्वाभाविक रूप से एक साथ सॉर्ट करते हैं।
माइक शेरिल 'कैट रिकॉल'

3

Dockerfileअच्छा है यदि आपके पास केवल एक डॉक फ़ाइल (प्रति-निर्देशिका) है। यदि आप एक ही निर्देशिका में एकाधिक docker फ़ाइलों की आवश्यकता है, तो आप जो भी मानक चाहते हैं, उसका उपयोग कर सकते हैं - यदि आपके पास एक अच्छा कारण है। हाल ही में एक परियोजना में AWS डॉक फाइलें और स्थानीय देव पर्यावरण फाइलें थीं क्योंकि वातावरण पर्याप्त भिन्न थे:

Dockerfile Dockerfile.aws


मैंने इस पद्धति का उपयोग आर्किटेक्चर को निर्दिष्ट करने के लिए भी किया है। उदाहरण के लिए, एक के Dockerfile.armv7hfआगे एक रखकर Dockerfile.i386
जोश हबदास

1

Dockerfile (कस्टम नाम और फ़ोल्डर):

   docker/app.Dockerfile
   docker/nginx.Dockerfile

बिल्ड:

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