Traffine I/O

Bahasa Indonesia

2022-06-07

CMD vs. ENTRYPOINT dalam Dockerfile

Pendahuluan

Artikel ini bertujuan untuk memberikan pemahaman tentang dua instruksi Dockerfile yang penting - CMD dan ENTRYPOINT.

CMD

CMD, singkatan dari Command, adalah instruksi Dockerfile yang memungkinkan Anda untuk menetapkan perintah default yang akan dieksekusi ketika sebuah kontainer dijalankan dari gambar yang dihasilkan. Perintah ini dapat digantikan dengan menyediakan perintah yang berbeda saat runtime. CMD berguna untuk memberikan perilaku default atau parameter tambahan untuk kontainer Anda.

Sintaks

Dockerfile
CMD ["executable", "param1", "param2"]

atau

Dockerfile
CMD command param1 param2

Contoh

Dockerfile
FROM ubuntu
CMD ["echo", "Hello, World!"]

Dalam contoh ini, perintah default untuk kontainer adalah echo "Hello, World!". Ketika kontainer dijalankan, perintah ini akan dieksekusi kecuali perintah yang berbeda ditentukan saat runtime.

ENTRYPOINT

ENTRYPOINT adalah instruksi Dockerfile lain yang menentukan executable default untuk sebuah kontainer. Berbeda dengan CMD, ENTRYPOINT tidak memungkinkan perintah untuk mudah digantikan saat runtime. Sebaliknya, semua argumen tambahan yang disediakan saat runtime akan ditambahkan ke perintah ENTRYPOINT. Hal ini membuat ENTRYPOINT sangat berguna ketika Anda ingin menetapkan executable atau aplikasi yang spesifik untuk dijalankan di dalam kontainer.

Sintaks

Dockerfile
ENTRYPOINT ["executable", "param1", "param2"]

atau

Dockerfile
ENTRYPOINT command param1 param2

Example

Dockerfile
FROM ubuntu
ENTRYPOINT ["tail", "-f", "/dev/null"]

Dalam contoh ini, perintah ENTRYPOINT memastikan bahwa kontainer selalu menjalankan perintah tail dengan parameter -f dan /dev/null. Semua parameter tambahan yang diteruskan saat runtime akan ditambahkan ke perintah ini.

Perbedaan Utama

  • Overriding behavior
    CMD dapat dengan mudah digantikan dengan menyediakan perintah baru saat runtime, sementara ENTRYPOINT dirancang untuk menetapkan executable yang spesifik, dengan argumen runtime tambahan yang ditambahkan ke perintah.

  • Fleksibilitas
    CMD lebih fleksibel bagi pengguna, memungkinkan mereka untuk menentukan atau mengubah perilaku default dari kontainer saat runtime, sementara ENTRYPOINT lebih kaku, menetapkan aplikasi atau executable yang spesifik.

  • Penggunaan yang Dimaksudkan
    CMD paling cocok untuk menyediakan perilaku default atau parameter tambahan, sementara ENTRYPOINT ideal untuk memastikan bahwa aplikasi tertentu selalu dieksekusi dalam kontainer.

Menggunakan CMD dan ENTRYPOINT Bersama-sama

CMD dan ENTRYPOINT dapat digunakan bersama-sama untuk membuat konfigurasi kontainer yang serbaguna dan kuat. Ketika digabungkan, ENTRYPOINT menetkan executable default, sedangkan CMD memberikan argumen default yang dapat digantikan saat runtime.

Dockerfile
FROM python:3.8
ENTRYPOINT ["python", "app.py"]
CMD ["--host", "0.0.0.0", "--port", "8000"]

Dalam contoh ini, ENTRYPOINT menentukan bahwa executable python harus digunakan untuk menjalankan skrip app.py. Instruksi CMD kemudian memberikan argumen default untuk kontainer, menetapkan host ke 0.0.0.0 dan port ke 8000. Ketika kontainer dijalankan, semua argumen tambahan yang disediakan saat runtime akan menggantikan argumen default dari CMD.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!