Docker: Kontainerisasi Aplikasi
Dockerfile, image, container, dan docker-compose
Tujuan Pembelajaran
- Memahami konsep containerization
- Bisa membuat Dockerfile dan docker-compose
Analogi
Docker = Kontainer Standar:
Sebelum Docker:
[App A] butuh Node 14, [App B] butuh Node 18
→ Konflik di satu server!
Dengan Docker:
[Container A: Node 14 + App A]
[Container B: Node 18 + App B]
→ Isolasi, tidak konflik!
Docker seperti kontainer — aplikasi terisolasi dengan dependensinya
Penjelasan Konsep
Docker
Docker adalah platform untuk mengemas aplikasi beserta semua dependensinya ke dalam container yang terisolasi.
Konsep Docker
- Dockerfile → Resep untuk membuat image.
- Image → Template aplikasi yang siap dijalankan.
- Container → Instance running dari image.
Kenapa Docker?
- Consistency → ‘Works on my machine’ tidak lagi jadi masalah.
- Isolation → Setiap app terisolasi dengan dependensinya.
- Portability → Jalankan di mana saja (lokal, server, cloud).
Docker Compose
→ Jalankan multi-container (app + database + redis) dengan 1 file.
Inti yang Perlu Dipahami
Bagian ini berfokus pada memahami konsep containerization., dan bisa membuat Dockerfile dan docker-compose. Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.
Saat membaca Docker, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.
Cara Membayangkannya
Docker seperti kontainer — aplikasi terisolasi dengan dependensinya. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.
Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.
Saat Melihat Contoh Kode
Contoh kode pada chapter ini memakai bahasa dockerfile. Bacalah contoh kode sebagai ilustrasi alur, bukan sebagai bagian yang harus langsung dihafal. Baris 1-11: Dockerfile. Baris 14-33: Docker Compose dengan app, db, dan redis.
Perhatikan nama fungsi, urutan langkah, dan data yang berpindah. Biasanya tiga hal itu sudah cukup untuk memahami hubungan antara teori dan praktik.
Konteks dalam Perjalanan Belajar
Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.
Kamu sedang membangun skill inti. Setelah bagian ini, kamu bisa memilih spesialisasi sesuai minat: frontend, backend, atau DevOps.
Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.
Contoh Kode
# Dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
# docker-compose.yml
version: '3'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- DATABASE_URL=postgres://db:5432/myapp
depends_on:
- db
- redis
db:
image: postgres:15
environment:
POSTGRES_DB: myapp
POSTGRES_PASSWORD: secret
redis:
image: redis:alpinePenjelasan Kode
Prompt AI
Jelaskan bedanya Docker container dan VM.
Pertanyaan Reflektif
Dockerize aplikasimu. Coba jalankan dengan docker-compose.