मेरे Dockerfile में किए बदलाव लागू नहीं हो रहे
आपकी रिपॉज़िटरी में Dockerfile है, आपने उसमें बदलाव किया, लेकिन Lizard जो बिल्ड चलाता है वह आपके लिखे से मेल नहीं खाता।
इसका क्या मतलब है
प्लेटफ़ॉर्म ने आपकी रिपॉज़िटरी के Dockerfile को अधूरा माना और उसे जस का तस इस्तेमाल करने के बजाय lizardpack से आपके लिए नया Dockerfile जनरेट किया।
ऐसा क्यों हो सकता है
यह जाँच सिर्फ़ GitHub सोर्स वाली सर्विसेज़ पर चलती है। अपलोड (lizard up) में रूट का Dockerfile हमेशा जैसा लिखा है, वैसा ही इस्तेमाल होता है।
GitHub सोर्स पर Lizard रूट Dockerfile को तब अधूरा मानता है, जब ये दोनों बातें सही हों:
- उसमें
build,dist,out,.nextयाpublicका ऐसाCOPYहै जो आख़िर में स्लैश के बिना लिखा गया है, जैसेCOPY dist /usr/share/nginx/html; - उसमें ऐसी कोई
RUNलाइन नहीं है जोnpm,yarn,pnpm,bun,pip,pip3,bundle,cargo,go build,mvnयाgradleसे शुरू होती हो।
Lizard मान लेता है कि ये आर्टिफ़ैक्ट इमेज के बाहर बिल्ड किए गए थे, और lizardpack उसकी जगह ऐसा Dockerfile जनरेट करता है जिसमें छूटा हुआ बिल्ड स्टेप शामिल हो।
दो और सेटिंग्स भी आपकी रिपॉज़िटरी के रूट Dockerfile को बायपास करती हैं। dockerfilePath सेट हो, तो Lizard वही फ़ाइल जस की तस इस्तेमाल करता है। वह सेट न हो और buildCommand या startCommand सेट हो, तो Lizard उन कमांड से अपना Dockerfile बना लेता है।
संभावित समाधान
असली बिल्ड स्टेप जोड़ें
अगर आप चाहते हैं कि आपका Dockerfile जैसा है वैसा ही इस्तेमाल हो, तो पहले से बिल्ड किया आउटपुट कॉपी करने के बजाय उसमें असली बिल्ड स्टेप जोड़ें:
RUN npm ci && npm run buildया Dockerfile को जस का तस इस्तेमाल करवाएँ
dockerfilePath सेट करें। इमेज बिल्ड के लिए इसे बिल्ड और स्टार्ट कमांड पर प्राथमिकता मिलती है, लेकिन सेट की गई startCommand रनटाइम पर फिर भी आपके Dockerfile की CMD की जगह ले लेती है, इसलिए एक ही अपडेट में दोनों कमांड खाली करें। खाली मान देने से फ़ील्ड खाली हो जाता है:
lizard service set api --set buildCommand= --set startCommand= --set dockerfilePath=Dockerfileयह भी देखें
- बिल्ड पाइपलाइन — बिल्ड का पूरा निर्णय क्रम।
- बिल्ड कॉन्फ़िगरेशन रेफ़रेंस
- एक मिनिमल FastAPI कंटेनर — Python का पूरा Dockerfile, और सोर्स बिल्ड के बजाय अपना Dockerfile कब लाना चाहिए।
इन बिल्ड फ़ील्ड को बदलने से बिल्ड शुरू हो सकता है। दूसरा बिल्ड शुरू होने से बचाने के लिए, एक और redeploy भेजने से पहले lizard events देखें।
अपडेट: