Docker untuk Developer: Dari Nol Sampai Container Pertama Jalan
Bingung memulai Docker? Artikel ini memandu kamu step by step: dari install sampai aplikasi Node.js berjalan di dalam container.
Kenapa Docker?
Docker memungkinkan kamu menjalankan aplikasi di dalam container yang terisolasi — lingkungan yang sama persis di laptop, staging, maupun production. Tidak ada lagi "works on my machine".
Install Docker
Download Docker Desktop dari docker.com untuk Mac atau Windows. Di Linux:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
Verifikasi instalasi:
docker --version
docker run hello-world
Konsep Dasar
- Image: blueprint dari container (seperti class di OOP).
- Container: instance yang berjalan dari sebuah image (seperti object).
- Dockerfile: instruksi untuk membangun image.
- Registry: tempat menyimpan dan berbagi image (Docker Hub).
Membuat Dockerfile untuk Node.js
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
Build dan Jalankan
# Build image
docker build -t my-node-app .
# Jalankan container
docker run -p 3000:3000 my-node-app
# Lihat container yang berjalan
docker ps
# Hentikan container
docker stop <container_id>
Docker Compose untuk Multi-Container
services:
app:
build: .
ports: ["3000:3000"]
environment:
- DATABASE_URL=postgres://user:pass@db:5432/mydb
depends_on: [db]
db:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: pass
POSTGRES_USER: user
POSTGRES_DB: mydb
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
docker compose up -d # jalankan di background
docker compose down # hentikan semua service
docker compose logs -f # lihat log real-time
Langkah Selanjutnya
Setelah nyaman dengan dasar-dasar ini, eksplorasi multi-stage builds untuk memperkecil ukuran image production, dan Docker networking untuk komunikasi antar-container yang lebih kompleks.