Pernah nggak kamu capek dengerin teman dev yang bilang, "Di komputerku jalan kok, kok di servermu nggak?" — lalu kamu cuma bisa senyum kecut sambil tepuk jidat? Nah, masalah klasik ini adalah alasan utama kenapa Docker dan cara membuat Dockerfile wajib kamu kuasai. Dockerfile adalah resep rahasia yang bikin aplikasimu bisa jalan persis sama di manapun — laptop developer, server produksi, hingga cloud. Di artikel ke-4 dari seri Docker from Zero to Zorro ini, kita bakal belajar bareng cara membuat Dockerfile dari nol sampai benar-benar jalan di dalam container. Siap? Gas!
Dockerfile adalah file teks berisi sekumpulan instruksi yang ditulis secara berurutan, digunakan oleh Docker untuk membangun sebuah image secara otomatis. Bayangkan Dockerfile sebagai resep masak — kamu mendaftar bahan-bahan dan langkah-langkahnya, lalu Docker yang masak sampai matang jadi image siap pakai.
🧠 Apa Itu Dockerfile dan Kenapa Kamu Butuh Cara Membuat Dockerfile?
Bayangkan kamu adalah seorang chef yang punya restoran di 10 kota sekaligus. Tiap cabang harus menyajikan menu yang identik persis — rasa, porsi, penyajian. Kamu nggak mungkin hadir di 10 tempat sekaligus untuk masak sendiri. Solusinya? Tulis resep yang sangat detail dan pastikan semua juru masak ikuti langkah yang sama.
Itulah peran Dockerfile dalam dunia development. Kamu menulis "resep" satu kali, lalu Docker bisa mencetak environment yang identik di mana pun. Tanpa Dockerfile, setiap developer di tim kamu bisa jadi punya versi Node.js berbeda, konfigurasi berbeda, dan akhirnya — bug yang susah direproduksi.
Menurut survei Stack Overflow Developer Survey, Docker secara konsisten masuk 3 besar teknologi yang paling banyak digunakan oleh para profesional software development di seluruh dunia. Menguasai cara membuat Dockerfile bukan cuma nilai plus — ini sudah jadi ekspektasi dasar di banyak lowongan kerja developer.
📋 Instruksi-Instruksi Wajib dalam Dockerfile
| Instruksi | Fungsi | Contoh |
|---|---|---|
FROM |
Menentukan base image | FROM node:18-alpine |
WORKDIR |
Set direktori kerja dalam container | WORKDIR /app |
COPY |
Salin file dari host ke container | COPY . . |
RUN |
Jalankan perintah saat build | RUN npm install |
EXPOSE |
Deklarasikan port yang digunakan | EXPOSE 3000 |
CMD |
Perintah default saat container start | CMD ["node","index.js"] |
🛠️ Cara Membuat Dockerfile Langkah demi Langkah (Praktik Nyata!)
Oke, cukup teori. Sekarang kita langsung praktik! Kita akan bikin Dockerfile untuk aplikasi Node.js sederhana (Express.js). Kenapa Node.js? Karena ringan, populer, dan cocok banget untuk belajar konsep Dockerfile tanpa terdistraksi kompleksitas bahasa lain.
Buat Struktur Proyek
Pertama, buat folder proyek dan dua file penting: index.js sebagai aplikasi, dan package.json sebagai metadata proyek.
Tulis File index.js
Aplikasi Express.js paling sederhana yang mungkin — hanya menampilkan pesan "Hello from Docker!" ketika diakses.
Inilah Bintang Utamanya — Tulis Dockerfile-mu!
Buat file bernama Dockerfile (tanpa ekstensi!) di root folder proyekmu, lalu isi dengan instruksi berikut. Perhatikan setiap baris — kita bakal bedah artinya satu per satu.
Kenapa COPY package*.json ./ ditulis sebelum COPY . .? Ini adalah teknik layer caching! Docker menyimpan cache tiap layer. Kalau kamu mengubah kode tapi tidak mengubah package.json, Docker tidak perlu menjalankan npm install ulang — hemat waktu build sampai 10x lebih cepat!
Tambahkan .dockerignore
Sama seperti .gitignore, file ini memberitahu Docker file apa yang tidak perlu disalin ke dalam image — supaya image kamu tetap ramping.
🚀 Build & Jalankan: Cara Membuat Dockerfile Jadi Container Nyata
Dockerfile sudah jadi, sekarang saatnya "memasak" resep itu jadi sebuah image, lalu menjalankannya sebagai container. Buka terminal kamu, arahkan ke folder proyek, dan ikuti dua langkah ini.
Build Image dari Dockerfile
Jalankan Container dari Image
Flag -p 8080:3000 bekerja seperti penerusan surat. Kamu bilang ke Docker: "Kalau ada yang ketuk pintu nomor 8080 di komputerku, terusin ke nomor 3000 di dalam container." Dengan cara ini, kamu bisa jalankan banyak container di port internal yang sama, tapi akses dari port yang berbeda di host!
⚖️ RUN vs CMD vs ENTRYPOINT: Jangan Sampai Salah Paham
Tiga instruksi ini sering bikin bingung para pemula. Ini bedanya dalam satu analogi sederhana: membangun restoran 🍜
Satu Dockerfile hanya boleh punya satu instruksi CMD. Kalau kamu tulis lebih dari satu, hanya yang terakhir yang akan dieksekusi Docker. Ini sumber bug yang sering tidak disadari pemula!
Bagian dari Seri Lengkap
Artikel ini adalah Artikel 4 dari 10 dalam seri Docker from Zero to Zorro. Kunjungi halaman utama untuk daftar isi lengkap semua artikel!
No comments:
Post a Comment