Hantera filer i din image

Introduktion till Docker

Tim Sangster

Software Engineer @ DataCamp

COPY – kopiera filer till en image

Instruktionen COPY kopierar filer från din lokala dator till imagen vi bygger:

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

Om sökvägen till målet saknar filnamn används det ursprungliga filnamnet:

COPY /projects/pipeline_v3/pipeline.py /app/
Introduktion till Docker

COPY – kopiera mappar

Om inget filnamn anges i src-path kopieras hela mappinnehållet.

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

COPY /projects/pipeline_v3/ /app/ kopierar allt under pipeline_v3/:

/projects/
    pipeline_v3/
        pipeline.py
        requirements.txt
        tests/
            test_pipeline.py
Introduktion till Docker

Kopiera filer från en överordnad katalog

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

Om vår aktuella arbetskatalog är i mappen projects/.

Vi kan inte kopiera init.py till en image.

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

Ladda ned filer

Istället för att kopiera filer från en lokal katalog laddas filer ofta ned under imagebygget:

  • Ladda ned en fil

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

  • Packa upp filen

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

  • Ta bort den ursprungliga zip-filen

RUN rm <copy_directory>/<filename>.zip

Introduktion till Docker

Ladda ned filer effektivt

  • Varje instruktion som laddar ned filer ökar imagens totala storlek.
  • Även om filerna tas bort senare.
  • Lösningen är att ladda ned, packa upp och ta bort filer i en enda instruktion.
RUN curl <file_download_url> -o <destination_directory>/<filename>.zip \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Introduktion till Docker

Sammanfattning

Användning Dockerfile-instruktion
Kopiera filer från värddatorn till imagen COPY <src-path-on-host> <dest-path-on-image>
Kopiera en mapp från värddatorn till imagen COPY <src-folder> <dest-folder>
Det går inte att kopiera från en överordnad katalog där Dockerfile byggs COPY ../<file-in-parent-directory> /

Håll imagen liten genom att ladda ned, packa upp och städa upp i en enda RUN-instruktion:

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

Nu kör vi en övning!

Introduktion till Docker

Preparing Video For Download...