Bestanden beheren in je image

Introductie tot Docker

Tim Sangster

Software Engineer @ DataCamp

Bestanden COPY-en naar een image

De instructie COPY kopieert bestanden van je lokale machine naar de image die je bouwt:

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

Als het doelpad geen bestandsnaam heeft, wordt de oorspronkelijke naam gebruikt:

COPY /projects/pipeline_v3/pipeline.py /app/
Introductie tot Docker

Mappen COPY-en

Geen bestandsnaam opgeven in de src-path kopieert alle inhoud van de map.

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

COPY /projects/pipeline_v3/ /app/ kopieert alles onder pipeline_v3/:

/projects/
    pipeline_v3/
        pipeline.py
        requirements.txt
        tests/
            test_pipeline.py
Introductie tot Docker

Bestanden uit een bovenliggende map kopiëren

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

Als onze huidige werkmap de map projects/ is.

We kunnen init.py niet in een image kopiëren.

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

Bestanden downloaden

In plaats van kopiëren uit een lokale map, worden bestanden vaak tijdens de image-build gedownload:

  • Download een bestand

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

  • Pak het bestand uit

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

  • Verwijder het originele zip-bestand

RUN rm <copy_directory>/<filename>.zip

Introductie tot Docker

Bestanden efficiënt downloaden

  • Elke instructie die bestanden downloadt, vergroot de totale imagegrootte.
  • Zelfs als je ze later verwijdert.
  • Oplossing: download, pak uit en verwijder in één instructie.
RUN curl <file_download_url> -o <destination_directory>/<filename>.zip \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Introductie tot Docker

Samenvatting

Gebruik Dockerfile-instructie
Bestanden van host naar image kopiëren COPY <src-path-on-host> <dest-path-on-image>
Een map van host naar image kopiëren COPY <src-folder> <dest-folder>
Je kunt niet kopiëren uit een bovenliggende map van waar je de Dockerfile bouwt COPY ../<file-in-parent-directory> /

Houd images klein door downloaden, uitpakken en opruimen in één RUN-instructie te doen:

RUN curl <file_download_url> -o <destination_directory> \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Introductie tot Docker

Laten we oefenen!

Introductie tot Docker

Preparing Video For Download...