GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Menggunakan Dockerfile ONBUILD untuk Menjalankan Pemicu pada Build Hilir

ONBUILD Docker instruksi memungkinkan Anda mengatur pemicu dalam gambar. Pemicu Anda akan dieksekusi nanti, saat gambar digunakan sebagai dasar untuk yang lain. Mereka akan menjadi bagian dari konteks gambar hilir baru dan tidak akan menjadi lapisan sistem file di docker build awal Anda .

Menambahkan Pemicu ONBUILD

ONBUILD adalah instruksi yang Anda tulis ke dalam Dockerfiles Anda. Ini unik karena menerima lain instruksi sebagai argumennya. Anda dapat menentukan operasi Dockerfile apa pun, seperti COPY atau RUN , dan menjalankannya selama pembuatan gambar hilir.

ONBUILD RUN example-command

Contoh ini menjalankan example-command dalam gambar anak pada saat itu dibuat. Berikut ini kasus lain di mana file disalin dari konteks build gambar hilir ke dalam sistem file:

ONBUILD COPY assets.json /app/assets.json

ONBUILD instruksi tidak berpengaruh apa pun pada gambar yang dihasilkan oleh Dockerfile tempat mereka mendefinisikannya. Membangun Dockerfile di atas tidak jalankan example-command atau sertakan assets.json dalam gambar:

# Does not include the extra instructions
docker build -t base-image:latest .

Pemicu akan digunakan saat Anda menulis Dockerfile lain yang menggunakan yang pertama sebagai basisnya:

FROM base-image:latest
RUN my-binary
docker build -t downstream-image:latest .

Membangun Dockerfile ini akan menjalankan example-command , salin di assets.json , dan akhirnya jalankan my-binary . ONBUILD pemicu selalu dieksekusi terlebih dahulu, segera setelah FROM instruksi di Dockerfile hilir.

Bagaimana Docker Mengenali Pemicu?

ONBUILD tidak memengaruhi sistem file penampung dasar tetapi Docker masih mengetahui pemicu yang ada saat Anda membuat gambar hilir. Proses pembangunan melacak ONBUILD instruksi yang ditemukannya dan merekamnya dalam metadata gambar.

Docker memeriksa metadata dari gambar yang dirujuk dalam FROM petunjuk. Jika gambar bernama menyertakan pemicu dalam metadatanya, instruksi pemicu tersebut secara efektif ditempelkan ke bagian atas Dockerfile hilir sebelum pembangunan dimulai.

Pemicu sebenarnya dijalankan sebagai bagian dari FROM build build panggung. Mereka akan dijalankan sesuai urutan penulisannya di Dockerfile hulu. Jika ONBUILD instruksi gagal, Docker akan membatalkan build dan akan terlihat seperti FROM panggung adalah penyebabnya.

Batasan

Anda dapat menggunakan instruksi Dockerfile apa pun sebagai argumen untuk ONBUILD pemicu dengan tiga pengecualian:

  • ONBUILD FROM – Ini tidak diperbolehkan karena akan menimpa gambar dasar yang digunakan untuk build. Setiap Dockerfile harus mewarisi dari satu basis.
  • ONBUILD MAINTAINERMAINTAINER instruksi sudah usang dan tidak boleh digunakan; informasi kepengarangan paling baik diberikan sebagai label. LABEL instruksi kompatibel dengan ONBUILD .
  • ONBUILD ONBUILD – Rantai ONBUILD instruksi tidak didukung. Semua pemicu dieksekusi dalam gambar segera di hilir Dockerfile Anda. Anda tidak dapat menentukan pemicu yang dimaksudkan untuk dieksekusi dalam gambar "cucu" dua tingkat atau lebih di bawah Dockerfile yang menentukan.

Semua instruksi didefinisikan dengan cara yang sama seperti penggunaan regulernya. Tulis langkah biasa di Dockerfile Anda, lalu awali dengan ONBUILD , akan memindahkannya dari alur build normal dan menjadikannya sebagai pemicu build hilir.

Kapan Pemicu ONBUILD Berguna?

ONBUILD paling sering digunakan dalam gambar utilitas yang mengotomatisasi tugas-tugas seperti kompilasi kode. Prosedur semacam ini umumnya memerlukan beberapa langkah untuk dieksekusi dalam urutan tertentu, dengan dependensi seperti kode sumber Anda ditambahkan pada titik tertentu.

Pertimbangkan gambar kompilasi yang mencari kode sumber di direktori, lalu jalankan perintah untuk membangunnya. Anda tidak bisa begitu saja COPY dan RUN dalam Dockerfile gambar itu sebagai sumber pengguna akhir tidak akan ada di dalam Anda konteks pembuatan gambar.

Menggunakan ONBUILD memungkinkan Anda menyediakan Dockerfile boilerplate yang dapat diperluas pengguna Anda dan docker build tanpa menciptakan kembali fungsionalitas umum:

ENV BUILD_ENV=production
RUN init-build.sh

ONBUILD COPY /src /build
ONBUILD RUN compile.sh --destination=/bin

Contoh ini menunjukkan bagaimana image builder dapat menyediakan lingkungan kompilasi yang telah dikonfigurasi sebelumnya. Saat digunakan sebagai gambar dasar, kode akan secara otomatis dikompilasi dari konteks build hilir. Gambar itu dapat berinteraksi dengan keluaran yang dikompilasi di /bin dalam tahapan Dockerfile-nya sendiri.

Ringkasan

ONBUILD instruksi di Dockerfiles memberi Anda cara untuk mengeksekusi pemicu sebagai bagian dari build hilir. Anda dapat menggunakan instruksi Dockerfile lainnya sebagai ONBUILD pemicu, kecuali untuk beberapa batasan.

Menggunakan ONBUILD memungkinkan Anda menyediakan gambar Docker generik yang menentukan rangkaian fungsi yang dapat digunakan kembali. Ini lebih efisien daripada meminta pengguna menyalin teks contoh Dockerfiles kata demi kata, lalu menambahkan instruksi mereka sendiri di bagian bawah. Anda masih dapat memodifikasi dan memperbarui gambar dasar tanpa memerlukan tindakan dari pengguna Anda.

Mengadopsi ONBUILD mengurangi pengulangan dan memfasilitasi gambar dasar Docker yang dapat diperluas. ONBUILD instruksi layak dipertimbangkan saat Anda membuat Dockerfile boilerplate yang perlu disesuaikan oleh pengguna akhir sebelum lingkungan container akhir dianggap selesai.


Docker
  1. Bagaimana Cara Menggunakan Lightdm Untuk Sesi yang Ditentukan Pengguna?

  2. Cara membuat Gambar Docker dari Wadah dan File Docker

  3. Bagaimana cara menggunakan kgdb melalui ethernet (kgdboe)?

  1. Cara Menggunakan Gambar Docker, Wadah, dan File Docker Secara Mendalam

  2. Cara Menggunakan Tulis Docker

  3. Cara Menggunakan Dockerfile untuk Membangun Gambar Docker

  1. Cara Membuat Gambar Docker dengan Dockerfile

  2. Cara Menggunakan MySQL SHOW TRIGGERS

  3. Cara menggunakan mogrify untuk memotong gambar