मेरे पास ~ 300 एमबी ज़िप्ड स्थानीय फ़ाइल है जिसे मैं एक डॉकर छवि में जोड़ता हूं। अगला राज्य तब छवि निकालता है।डॉकर किसी फ़ाइल को किसी छवि के बिना इसे संपादित करने के लिए कैसे जोड़ें?
समस्या यह है कि एडीडी कथन का परिणाम एक प्रतिबद्धता में होता है जिसके परिणामस्वरूप एक नई फाइल सिस्टम परत छवि को ~ 300 एमबी की आवश्यकता होती है।
ADD /files/apache-stratos.zip /opt/apache-stratos.zip
RUN unzip -q apache-stratos.zip && \
rm apache-stratos.zip && \
mv apache-stratos-* apache-stratos
प्रश्न: वहाँ एक काम के आसपास एक प्रतिबद्ध पैदा करने के बिना स्थानीय फ़ाइलें जोड़ने के लिए है?
एक विकल्प एक सरल वेब सर्वर को चलाने के लिए है (उदाहरण के python -m SimpleHTTPServer
) डोकर निर्माण शुरू करने, और फिर फ़ाइल को पुनः प्राप्त करने के wget
का उपयोग कर, लेकिन यह थोड़ा गन्दा लगता है इससे पहले कि:
RUN wget http://localhost:8000/apache-stratos.zip && \
unzip -q apache-stratos.zip && \
rm apache-stratos.zip && \
mv apache-stratos-* apache-stratos
एक अन्य विकल्प के लिए है कंटेनर पर ज़िप्ड फ़ाइल निकालने के बजाय बिल्ड समय निकालें, लेकिन मैं जितनी जल्दी हो सके शुरू करना पसंद करूंगा।
ऐसा लगता है कि डॉकर 1.2.0 पर '.zip' फ़ाइल को डिकंप्रेस नहीं करता है। –
"यदि [src] एक मान्यता प्राप्त संपीड़न प्रारूप (पहचान, gzip, bzip2 या xz) में स्थानीय टैर संग्रह है तो यह निर्देशिका के रूप में अनपॅक किया गया है।" –
'.zip' फ़ाइलों के लिए समर्थन की कमी वाले एडीडी का तथ्य एक इच्छित निर्णय प्रतीत होता है: https://github.com/docker/docker/issues/15036 – jap1968