Mengelola file di dalam image

Pengantar Docker

Tim Sangster

Software Engineer @ DataCamp

Menyalin (COPY) file ke dalam image

Instruksi COPY menyalin file dari mesin lokal ke dalam image yang kita bangun:

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

Jika path tujuan tidak memiliki nama file, nama asli akan digunakan:

COPY /projects/pipeline_v3/pipeline.py /app/
Pengantar Docker

Menyalin (COPY) folder

Tidak menyebutkan nama file pada src-path akan menyalin seluruh isi folder.

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

COPY /projects/pipeline_v3/ /app/ akan menyalin semua di bawah pipeline_v3/:

/projects/
    pipeline_v3/
        pipeline.py
        requirements.txt
        tests/
            test_pipeline.py
Pengantar Docker

Menyalin file dari direktori induk

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

Jika direktori kerja saat ini berada di folder projects/.

Kita tidak dapat menyalin init.py ke dalam 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
Pengantar Docker

Mengunduh file

Alih-alih menyalin dari direktori lokal, file sering diunduh saat build image:

  • Unduh file

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

  • Ekstrak file

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

  • Hapus file zip asli

RUN rm <copy_directory>/<filename>.zip

Pengantar Docker

Mengunduh file secara efisien

  • Setiap instruksi yang mengunduh file menambah ukuran total image.
  • Bahkan jika file kemudian dihapus.
  • Solusinya: unduh, ekstrak, dan hapus dalam satu instruksi.
RUN curl <file_download_url> -o <destination_directory>/<filename>.zip \
&& unzip <destination_directory>/<filename>.zip -d <unzipped-directory> \
&& rm <destination_directory>/<filename>.zip
Pengantar Docker

Ringkasan

Penggunaan Instruksi Dockerfile
Menyalin file dari host ke image COPY <src-path-on-host> <dest-path-on-image>
Menyalin folder dari host ke image COPY <src-folder> <dest-folder>
Kita tidak dapat menyalin dari direktori induk tempat Dockerfile dibangun COPY ../<file-in-parent-directory> /

Jaga ukuran image kecil dengan mengunduh, mengekstrak, dan membersihkan dalam satu instruksi RUN:

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

Ayo berlatih!

Pengantar Docker

Preparing Video For Download...