Cara Optimasi Ukuran Docker Image dengan Multi-Stage Build

Oleh Fitri Aulia
Cara Optimasi Ukuran Docker Image dengan Multi-Stage Build

Hai DomaiNesians! Ukuran Docker image yang terlalu besar sering menjadi kendala karena dapat memperlambat build, deployment, dan meningkatkan penggunaan storage secara signifikan. Salah satu cara paling efektif untuk mengatasinya adalah dengan multi-stage build, di mana proses build dan runtime dipisahkan menjadi beberapa tahap. Hanya artefak yang benar-benar dibutuhkan yang akan masuk ke image akhir, sehingga image menjadi lebih ringan dan cepat. Teknik ini tidak hanya mengoptimalkan resource server, tetapi juga membuat workflow containerisasi lebih rapi dan mudah di-maintain, terutama untuk proyek yang berskala besar.

Apa Itu Multi-Stage Build dan Manfaatnya?

multi stage

Multi-stage build adalah teknik dalam Docker yang membuat proses build dan runtime dipisahkan menjadi beberapa tahap dalam satu Dockerfile. Dengan pendekatan ini, hanya artefak yang benar-benar dibutuhkan untuk menjalankan aplikasi yang akan dimasukkan ke image akhir, sedangkan file sementara, tool build, atau dependency yang hanya diperlukan saat build akan dibuang. Hal ini membuat image akhir menjadi lebih bersih dan ringan.

Beberapa manfaat utama dari multi-stage build antara lain:

  • Ukuran image lebih kecil – mengurangi layer yang tidak diperlukan sehingga image lebih ringan, cepat di-pull, dan hemat bandwidth.
  • Efisiensi resource – menghemat storage dan meminimalkan penggunaan memory saat build atau deployment.
  • Keamanan lebih baik – dependency build yang sensitif atau tool developer tidak ikut masuk ke image produksi, mengurangi potensi risiko keamanan.
  • Workflow lebih rapi dan terstruktur – memisahkan environment build dan runtime membuat Dockerfile lebih mudah dibaca, dipelihara, dan scalable.
  • Mendukung deployment di berbagai environment – image yang ringan dan bersih lebih fleksibel untuk dijalankan di server, VPS, atau cloud tanpa modifikasi tambahan.
Baca Juga:  Cara Install Webmin di VPS Ubuntu: Kelola Server Lewat Web GUI

Selain itu, multi-stage build juga membantu mempercepat proses CI/CD, karena tahap build dan tahap runtime dapat dijalankan secara terpisah, mempermudah debugging, serta meminimalkan error saat deploy. Teknik ini menjadikan Dockerfile lebih modular dan memudahkan pengelolaan project yang kompleks, terutama untuk tim pengembang yang bekerja secara kolaboratif.

Persiapan Docker Environment

Sebelum DomaiNesians  membuat Dockerfile dengan multi-stage build, pastikan lingkungan Docker di server atau mesin lokal sudah siap. Persiapan yang matang akan meminimalkan error dan memperlancar proses build.

1. Instalasi Docker

Pastikan docker sudah diinstall dan aktif di VPS

2. Tambahkan User ke Group Docker (Opsional)

Agar bisa menjalankan Docker tanpa sudo:

3. Persiapkan Direktori Project

Buat direktori project untuk menyimpan Dockerfile dan source code aplikasi:

Membuat Dockerfile Multi-Stage

Setelah lingkungan Docker siap, langkah berikutnya adalah membuat Dockerfile multi-stage untuk aplikasi. Teknik multi-stage memungkinkan memisahkan tahap build dan runtime, sehingga image akhir menjadi lebih ringan dan efisien.

1. Struktur Dasar Dockerfile Multi-Stage

Contoh Dockerfile untuk aplikasi Node.js:

2. Penjelasan Tahap Build

  • Stage 1 (builder):
    • Menggunakan image Node.js lengkap untuk build.
    • Menginstall semua dependency dan membangun aplikasi.
    • Semua file sementara dan dev-dependency tetap berada di stage ini.
  • Stage 2 (Production):
    • Menggunakan image alpine yang lebih ringan.
    • Hanya menyalin hasil build dari stage builder.
    • Menginstall dependency yang dibutuhkan runtime saja.
Baca Juga:  Cara Install AIDE HIDS di VPS Linux Untuk Integritas File

Mengurangi Ukuran Docker Image Secara Efektif

Setelah Dockerfile multi-stage siap, ada beberapa langkah tambahan untuk memperkecil ukuran image:

  1. Gunakan Base Image Ringan
    Pilih image seperti alpine atau slim untuk stage production. Contoh:
    FROM node:18-alpine
  2. Hapus File yang Tidak Diperlukan
    Pastikan hanya menyalin file yang dibutuhkan ke stage produksi:
    COPY –from=builder /app/dist ./dist
  3. Gabungkan Perintah RUN
    Menggabungkan beberapa perintah RUN menjadi satu akan mengurangi jumlah layer, sehingga image lebih kecil:

  4. Gunakan .dockerignore
    Hindari menyalin file yang tidak perlu, seperti node_modules atau file dokumentasi, dengan menambahkannya ke .dockerignore.
  5. Optimalkan Dependency
    Install hanya dependency yang dibutuhkan untuk runtime dengan –production di Node.js, atau opsi serupa untuk bahasa lain.
  6. Jalankan Container untuk Testing

Bangun image dari Dockerfile:

7. Jalankan dan Verifikasi Container

Jalankan container untuk memastikan aplikasi berjalan:

Cek fungsionalitas aplikasi melalui browser atau curl. Setelah selesai, hentikan dan hapus container testing:

Troubleshooting Multi-Stage Build 

docker

Saat bekerja dengan Docker multi-stage build di VPS, beberapa masalah sering muncul. Berikut beberapa kasus umum beserta cara menanganinya:

1. Build Gagal karena Dependency Hilang

Kadang proses build berhenti karena dependency yang dibutuhkan tidak terinstall. Pastikan semua package dan library yang dibutuhkan tercantum di stage build, dan cek syntax perintah RUN atau COPY di Dockerfile.

2. Container Tidak Bisa Start

Jika container gagal berjalan, penyebabnya bisa dari CMD atau ENTRYPOINT yang kurang tepat, atau port yang bentrok dengan service lain di VPS. Solusinya jalankan container secara interaktif untuk menelusuri error secara langsung.

Baca Juga:  Webinoly: 1 Solusi Mudah Mengelola Server Web di Linux

3. File atau Artefak Hilang di Stage Production

Multi-stage build memisahkan build dan runtime, jadi jangan sampai file penting tidak disalin ke stage akhir. Pastikan perintah COPY –from=builder menyalin file yang benar, dan periksa .dockerignore supaya tidak menahan file yang dibutuhkan.

4. Image Terlalu Besar atau Boros Resource VPS

Image besar dapat membebani VPS, memperlambat deploy, dan memakan storage. Gunakan base image ringan seperti alpine, hapus file sementara, dan install hanya dependency yang diperlukan untuk runtime.

5. Port atau Resource VPS Bentrok

Container membutuhkan port dan resource tertentu. Periksa penggunaan port dan kapasitas VPS agar container berjalan lancar.

Optimalkan Workflow Docker dengan Image Ringan dan Efisien

Menggunakan multi-stage build memungkinkan Docker image menjadi lebih ringan, efisien, dan mudah dikelola. Dengan langkah optimasi, penghapusan file yang tidak perlu, serta verifikasi menyeluruh, workflow containerisasi berjalan lebih stabil dan profesional, sehingga meminimalkan masalah saat deployment. Teknik ini sangat cocok untuk memastikan aplikasi berjalan lancar di berbagai environment, terutama saat dijalankan di VPS berkinerja tinggi yang mendukung proses build dan deployment cepat.

Gunakan Cloud VPS yang andal untuk mendukung deployment aplikasi dengan lebih cepat, ringan, dan efisien. Dengan resource yang hemat, performa stabil, dan skalabilitas tinggi, tim pengembang dapat fokus membangun aplikasi tanpa khawatir soal performa container maupun ukuran image. Saatnya beralih ke Cloud VPS yang siap mendukung setiap proyek hingga skala besar.

Fitri Aulia

Hi! I'm a tech enthusiast who loves digging into how things work, especially in web development, VPS setups, and anything open-source.

Berlangganan Artikel

Dapatkan artikel, free ebook dan video
terbaru dari DomaiNesia

{{ errors.name }} {{ errors.email }}
Migrasi ke DomaiNesia

Migrasi Hosting ke DomaiNesia Gratis 1 Bulan

Ingin memiliki hosting dengan performa terbaik? Migrasikan hosting Anda ke DomaiNesia. Gratis jasa migrasi dan gratis 1 bulan masa aktif!

Ya, Migrasikan Hosting Saya