अपने इमेज में फाइलें मैनेज करना

Docker परिचय

Tim Sangster

Software Engineer @ DataCamp

इमेज में फाइलें COPY करना

COPY निर्देश हमारी लोकल मशीन से बन रही इमेज में फाइलें कॉपी करता है:

COPY <src-path-on-host> <dest-path-on-image>
COPY /projects/pipeline_v3/pipeline.py /app/pipeline.py
docker build -t pipeline:v3 .
...
[4/4] COPY ./projects/pipeline_v3/pipeline.py /app/pipeline.py

यदि डेस्टिनेशन पाथ में फ़ाइलनाम नहीं है, तो ओरिजिनल फ़ाइलनाम ही उपयोग होगा:

COPY /projects/pipeline_v3/pipeline.py /app/
Docker परिचय

फोल्डर COPY करना

यदि src-path में फ़ाइलनाम न दें, तो फोल्डर की सारी सामग्री कॉपी होगी।

COPY <src-folder> <dest-folder>
COPY /projects/pipeline_v3/ /app/

COPY /projects/pipeline_v3/ /app/ pipeline_v3/ के अंदर की हर चीज़ कॉपी करेगा:

/projects/
    pipeline_v3/
        pipeline.py
        requirements.txt
        tests/
            test_pipeline.py
Docker परिचय

पैरेंट डायरेक्टरी से फाइलें कॉपी करें

/init.py
/projects/
    Dockerfile
    pipeline_v3/
        pipeline.py

यदि हमारी current working directory projects/ फोल्डर में है।

हम init.py को इमेज में कॉपी नहीं कर सकते।

docker build -t pipeline:v3 .
 => ERROR [4/4] COPY ../init.py /     0.0s
failed to compute cache key: "../init.py" not found: not found
Docker परिचय

फाइलें डाउनलोड करना

लोकल डायरेक्टरी से कॉपी करने के बजाय, अक्सर इमेज बिल्ड के दौरान फाइलें डाउनलोड की जाती हैं:

  • एक फाइल डाउनलोड करें

RUN curl <file-url> -o <destination>

  • फाइल अनज़िप करें

RUN unzip <dest-folder>/<filename>.zip

  • ओरिजिनल zip फाइल हटाएँ

RUN rm <copy_directory>/<filename>.zip

Docker परिचय

फाइलें कुशलतापूर्वक डाउनलोड करना

  • फाइल डाउनलोड करने वाला हर निर्देश इमेज का साइज बढ़ाता है।
  • भले ही बाद में फाइलें डिलीट कर दें।
  • समाधान: एक ही निर्देश में डाउनलोड, अनज़िप और रिमूव करें।
RUN curl <file_download_url> -o <destination_directory>/<filename>.zip \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Docker परिचय

सारांश

Usage Dockerfile Instruction
होस्ट से इमेज में फाइलें कॉपी करें COPY <src-path-on-host> <dest-path-on-image>
होस्ट से इमेज में फोल्डर कॉपी करें COPY <src-folder> <dest-folder>
जहाँ Dockerfile बिल्ड हो रहा है, वहाँ की पैरेंट डायरेक्टरी से कॉपी नहीं कर सकते COPY ../<file-in-parent-directory> /

इमेज को छोटा रखें: एक ही RUN निर्देश में डाउनलोड, अनज़िप और क्लीनअप करें:

RUN curl <file_download_url> -o <destination_directory> \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Docker परिचय

अभ्यास करते हैं!

Docker परिचय

Preparing Video For Download...