Tutorial Docker untuk Pemula: Deploy Aplikasi dalam 5 Menit
Masalah klasik “It works on my machine” hampir pasti pernah dialami oleh setiap developer. Aplikasi yang berjalan mulus di laptop sering kali bermasalah saat dipindahkan ke server staging atau production. Docker hadir sebagai solusi dengan konsep containerization yang memungkinkan aplikasi berjalan konsisten di berbagai environment.
Apa Itu Container?
Container dapat dianalogikan seperti kotak pengiriman standar di dunia logistik. Di dalamnya terdapat aplikasi beserta seluruh dependency, runtime, dan konfigurasi penting. Berbeda dengan virtual machine, container berbagi kernel dengan host sehingga lebih ringan dan cepat dijalankan.
Instalasi Docker
Di Windows dan macOS, cukup install Docker Desktop dari situs resmi. Di Linux, instalasi bisa dilakukan melalui repository distribusi atau skrip resmi Docker. Setelah terinstal, jalankan perintah berikut untuk memastikan Docker berjalan dengan baik:
docker version
docker run hello-worldKonsep Dasar Docker
Tiga konsep utama Docker adalah Image, Container, dan Registry.
- Image: Blueprint atau resep aplikasi
- Container: Instance aktif dari image
- Registry: Tempat penyimpanan image (contoh: Docker Hub)
Alur kerja umumnya:
Dockerfile → Build Image → Push ke Registry → Jalankan Container
Perintah Dasar Docker
docker build -t my-app .
docker run -p 3000:3000 my-app
docker ps
docker logs <container_id>Perintah-perintah ini sudah cukup untuk mulai menjalankan aplikasi dalam container.
Studi Kasus: Deploy Aplikasi Node.js
Misalnya kita memiliki aplikasi Express.js yang berjalan di port 3000. Berikut contoh Dockerfile sederhana:
FROM node:alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]Build dan jalankan dengan:
docker build -t my-express-app .
docker run -p 3000:3000 my-express-appSekarang aplikasi bisa diakses melalui browser di http://localhost:3000.
Best Practices
- Gunakan base image minimal seperti alpine
- Gunakan multi-stage build
- Hindari menyimpan credential di image
- Gabungkan RUN command untuk mengurangi layer
- Bersihkan cache package manager
Tips & Troubleshooting
docker logs <container_id>
docker exec -it <container_id> shPastikan port mapping benar dan firewall tidak memblokir akses. Gunakan volume mount saat development agar tidak perlu rebuild terus-menerus.
Kesimpulan
Docker adalah skill penting di dunia modern software development. Dengan memahami konsep image, container, dan registry, Anda sudah selangkah lebih siap memasuki ekosistem DevOps dan cloud-native development.
Comments
No comments yet. Be the first to share your thoughts!