Best Practice dalam Menulis Dockerfile

Dengan mengikuti best practice ini, kita dapat membuat image Docker yang efisien, aman, dan mudah dikelola.

Berikut adalah beberapa best practices yang penting:

1. Minimalkan Ukuran Image

  • Pilih base image yang tepat: Pilih base image yang sekecil mungkin dan hanya berisi komponen yang benar-benar dibutuhkan.

  • Gunakan multi-stage builds: Memisahkan proses build dan runtime ke dalam tahap yang berbeda dapat mengurangi ukuran final image.

  • Hapus file yang tidak perlu: Setelah proses build selesai, hapus file-file yang tidak diperlukan lagi.

2. Tingkatkan Keamanan

  • Jangan gunakan root user: Jalankan aplikasi sebagai non-root user untuk meningkatkan keamanan.

  • Perbarui paket secara teratur: Pastikan semua paket dalam image selalu diperbarui ke versi terbaru untuk memperbaiki kerentanan keamanan.

  • Minimalkan permukaan serangan: Hanya pasang paket yang benar-benar dibutuhkan.

  • Hindari menyimpan secret di Dockerfile: Simpan secret seperti password atau token di environment variable saat menjalankan container.

3. Tingkatkan Efisiensi Build

  • Cache layer: Manfaatkan caching layer untuk mempercepat proses build.

  • Optimalkan perintah RUN: Gabungkan beberapa perintah RUN menjadi satu jika memungkinkan untuk mengurangi jumlah layer.

  • Gunakan .dockerignore: Abaikan file yang tidak perlu di-copy ke image.

4. Jaga Konsistensi

  • Gunakan versi yang spesifik: Tentukan versi yang spesifik untuk base image, bahasa pemrograman, dan paket lainnya untuk menghindari masalah kompatibilitas.

  • Ikuti konvensi penamaan: Gunakan konvensi penamaan yang konsisten untuk layer dan tag image.

Contoh Dockerfile dengan Best Practices:

Dockerfile

Penjelasan:

  • Menggunakan python:3.9-slim-buster sebagai base image yang kecil.

  • Menggunakan --no-cache-dir untuk menghindari caching layer yang tidak perlu.

  • Membuat user non-root untuk meningkatkan keamanan.

  • Menggunakan environment variable untuk menyimpan konfigurasi.

Last updated