docker · Docker
संदेश
COPY failed: file not found in build context or excluded by .dockerignore
इसका मतलब
COPY केवल build context के भीतर की चीज़ें ला सकता है, और वह फ़ाइल वहाँ नहीं है। context, docker build का अंतिम तर्क होता है, इसलिए आमतौर पर आपने ../x से किसी ऊपरी फ़ोल्डर की ओर इशारा किया, या .dockerignore ने उस फ़ाइल को छान दिया — यह तब क्लासिक है जब node_modules या *.env अनदेखा किया गया हो और फिर उसी के भीतर की फ़ाइल COPY की जाए। संदेश दोनों कारण गिनाता है, इसलिए पहले cat .dockerignore पढ़ें और रास्ता context की जड़ से लिखें। context चौड़ा करके हल करने का मतलब है पूरा फ़ोल्डर daemon को भेजना, जिससे हर build धीमा होता है।
सुधार
cat .dockerignore- कौन देता है
- docker
- Docker
- 12
docker की त्रुटियाँ तभी पढ़ी जाती हैं जब आप उन्हें परत के हिसाब से बाँट लें — client का daemon तक न पहुँचना, registry का मना करना, build के दौरान किसी RUN का विफल होना, और container का चालू होते ही मर जाना — ये चार अलग समस्याएँ हैं; और build तथा चलने की परतों में पंक्ति स्वयं कारण नहीं होती: कारण उस आदेश के output में होता है जो भीतर चल रहा था, और हर उपाय की क़ीमत भी परत के अनुसार बदलती है।
एरर संदेश कैसे पढ़ें
- पहली पंक्ति से पढ़ें। जितना नीचे जाएँगे उतना वह औज़ार के भीतर की बात है; कारण आम तौर पर सबसे ऊपर लिखा होता है।
- फ़ाइल का नाम और पंक्ति संख्या दिखे तो वहीं से शुरू करें — stack का सबसे ऊपरी frame नहीं, बल्कि वह सबसे ऊपरी पंक्ति जिसमें आपकी लिखी फ़ाइल का नाम हो।
- संदेश को जैसा है वैसा खोजें, पर पहले अपने paths और variable नाम हटा दें — वही खोज को अटकाते हैं।
- वही स्थिति औज़ार के हर संस्करण में अलग शब्दों में आती है। नतीजे बेमेल लगें तो संस्करण संख्या भी जोड़ें।
- कोई सुधार चिपकाने से पहले देख लें कि वह क्या फेंक देगा। इनमें कुछ पलटे नहीं जा सकते।
अक्सर पूछे जाने वाले सवाल
Q. “COPY failed: file not found in build context or excluded by .dockerignore” का क्या मतलब है?
COPY केवल build context के भीतर की चीज़ें ला सकता है, और वह फ़ाइल वहाँ नहीं है। context, docker build का अंतिम तर्क होता है, इसलिए आमतौर पर आपने ../x से किसी ऊपरी फ़ोल्डर की ओर इशारा किया, या .dockerignore ने उस फ़ाइल को छान दिया — यह तब क्लासिक है जब node_modules या *.env अनदेखा किया गया हो और फिर उसी के भीतर की फ़ाइल COPY की जाए। संदेश दोनों कारण गिनाता है, इसलिए पहले cat .dockerignore पढ़ें और रास्ता context की जड़ से लिखें। context चौड़ा करके हल करने का मतलब है पूरा फ़ोल्डर daemon को भेजना, जिससे हर build धीमा होता है।
Q. इसे कैसे ठीक करें?
cat .dockerignore — चलाने से पहले ऊपर देख लें कि यह कमांड क्या फेंक देता है।
Q. यह कौन-सा औज़ार देता है?
docker। यह Docker में आता है, और संदेश 12 शब्दों का है।